「Option ‘importsNotUsedAsValues’ is deprecated and will stop functioning in TypeScript 5.5.」エラーに遭遇した時の覚書
TypeDocを使用する際に発生したエラーに関する解決方法を見つけました。TypeScript 5.5以前で作成されたものを新しいバージョンで実行する場合に発生するエラーについて説明があり、解決策はtsconfig.jsonファイルで”verbatimModuleSyntax”をtrueに変更することです。これにより、エラーが解決されます。関連リンクも参考になります。
目次
TypeDocを実行しようとした際、タイトルのエラーに遭遇することがありました。
$ npx typedoc ./src/index.ts --out ./docs/api-reference --tsconfig ./tsconfig.json
Need to install the following packages:
[email protected]
Ok to proceed? (y) y
error TS5101: Option 'importsNotUsedAsValues' is deprecated and will stop functioning in TypeScript 5.5. Specify compilerOption '"ignoreDeprecations": "5.0"' to silence this error.
Use 'verbatimModuleSyntax' instead.
TypeScriptのリポジトリにエラー内容がと関連する変更があったのでTypeScript 5.5以前で作られたものを、新しいバージョンで動かすときにエラーがでる・・・っぽいです。
importsNotUsedAsValues
was made to serve the opposite purpose you (and basically everyone) were using it for. By default, TypeScript elides unneeded import statements from JS emit even without marking them astype
imports.importsNotUsedAsValues
was created as a way to escape that behavior, not (primarily) to make it more explicit.verbatimModuleSyntax
allows you to escape the elision behavior, and takes the explicitness of what your imports mean a step further by making you write CJS-style imports when emitting to CJS. So in my book, all the important cases thatimportsNotUsedAsValues
(andpreserveValueImports
) covered, plus more, are covered byverbatimModuleSyntax
, which is way more explainable. It’s mostly a matter of reducing complexity for the sake of explanation.
https://github.com/microsoft/TypeScript/pull/52203#issuecomment-1476574601
解決策もドキュメントに記載されていますので、tsconfig.json
を変更しましょう。
{
"compilerOptions": {
- "importsNotUsedAsValues": "error",
+ "verbatimModuleSyntax": true,
...
これでエラーが解決できました。