私はひどく書かれた古いタイプのnpmパッケージを持っています。私は自分のタイピングを作成しましたが、npmパッケージから元のタイピングをどうにかして除外できるかどうか疑問に思っています。これはインターフェースの単純な拡張ではなく、オリジナルは基本的にこの時点ではゴミです。
Tsconfig.jsonの除外リストを使用しても、もちろんこの目的では機能しません。そのフォルダーを除外しても、node_modulesからファイルがロードされるためです。
TsConfigのパスオプションで目的の動作を取得できます。次のようになります。
{
"compilerOptions": {
...
"paths": {
"*": [
"src/*",
"declarations/*"
]
}
},
...
}
この構成では、TypeScriptはsrc(すべてのアプリソースがあるはずです)と宣言でモジュールを検索します。宣言フォルダーでは、通常、追加の必要な宣言を配置します。
ノードモジュールのタイプをオーバーライドするには、2つのオプションがあります。
入力用のindex.d.tsというファイルを含む、宣言フォルダー内にモジュールのような名前のフォルダーを配置します
モジュールのような名前の宣言ファイルを宣言フォルダー内に配置します
実用的な例として、このリポジトリをご覧ください https://github.com/kaoDev/react-ts-sample
Bernhard Koenig による重要なヒント:
パスの順序は重要です。オーバーライドが最初に取得されるように、オーバーライドを含むパスを元の型定義を含むパスの前に置く必要がありました。 – Bernhard Koenig
作成node_modules
フォルダーをsrc
の下に置き、上書きするモジュールの型をその中に置きます。
├── node_modules
│ └── ...
│
└── src
├── index.ts
├── ... your codes ...
│
└── node_modules
└── <module-to-be-overwritten>
└── index.d.ts
Tsconfig.jsonのcompilerOptions
を変更する必要はありません。
https://www.typescriptlang.org/docs/handbook/module-resolution.html のTypeScriptがモジュールを解決する方法セクションを読みます。