web-dev-qa-db-ja.com

typescriptの「モジュールが見つかりません」エラーを無視する

TypeScriptコンパイラは、次のようなインポート式のcannot find module 'x'エラーを無視できますか?

//How to tell the compiler that this module does exists
import sql = require('sql');

node sql など、既存の型指定がないnpmライブラリが複数あります

declare module x ...を使用して新しい定義ファイルを作成する以外に、このエラーを無視するようコンパイラーに指示する方法はありますか?

19
Rafael

コンパイラをバイパスするだけの場合は、そのモジュールの.d.tsファイルを作成できます。たとえば、sql.d.tsファイルを作成すると、内部に次のようになります。

declare module "sql" {
  let _sql: any;
  export = _sql;
}
12
thitemple

TypeScript 2.6(2017年10月31日リリース)から、ターゲット行の前に// @ts-ignoreコメントを使用して 特定の行からのすべてのエラーを無視する方法 が追加されました。

言及されたドキュメント は十分に簡潔ですが、要約すると:

// @ts-ignore
const s : string = false

この行のエラー報告を無効にします。

ただし、これは、エラーを修正したり、(x as any)のようなハックを使用したり、行のすべての型チェックを失うよりもはるかに問題が多い場合にのみ、最後の手段として使用してください。

特定のエラーの指定に関しては、現在(2018年半ば)の状態について説明します ここでは、設計会議ノート(2018年2月16日)と追加のコメント

「結論なしまだ

そして、この微調整を導入することへの強い反対。

14
stsloth

解決済みデフォルトでは、@ ts-checkはモジュールの定義(独自のコードまたは外部ライブラリ)を探します。

ES6スタイルのモジュールを使用していないため、commonjsを使用する必要があります。ヘルプについては、jsconfig.jsonファイルを確認してください。

{
  "compilerOptions": {
    "target": "es6",
    "module": "commonjs",
    "lib": ["es5", "es6", "es7"]
  },
  "include": ["src/**/*"],
  "exclude": ["node_modules"],
  "typeAcquisition": { "enable": true }
}
1
Saad Abbasi