## 事象 以下のようにclass以外をimportしたとき ```ts import { TaskService } from "./app/TaskService"; ``` TS1371エラーが出る。 ``` TS1371: This import is never used as a value and must use 'import type' because 'importsNotUsedAsValues' is set to 'error'. ``` ## 原因 [[importsNotUsedAsValues]]が`error`にセットされているため。通常の`import`で`type`や`interface`を指定すると、値としては利用されていないためエラーになる [[Svelte]]を利用するプロジェクトで[[tsconfig.json]]にて`extends`に指定する以下にこの設定が含まれる。 `tsconfig.json` ```json "extends": "@tsconfig/svelte/tsconfig.json", ``` `@tsconfig/svelte/tsconfig.json` ```ts /** Svelte Preprocess cannot figure out whether you have a value or a type, so tell TypeScript to enforce using `import type` instead of `import` for Types. */ "importsNotUsedAsValues": "error", ``` [[Svelte]]単独では値と型の判断ができないため、[[TypeScript]]のコードで[[Type-Only Imports and Export]]を使う必要がある。ただ、`import Hoge`を`import type Hoge`と書くのは忘れてしまうことも多いため、この設定が推奨されているはず。 ## 解決方法 [[Type-Only Imports and Export]]を使う。 ```diff - import { TaskService } from "./app/TaskService"; + import type { TaskService } from "./app/TaskService"; ```