メインコンテンツへスキップ

公式の型付けの虫を修正

ライブラリの公式の型付けにバグが発生した場合は、それらをローカルにコピーして、「paths」フィールドを使用して TypeScript にローカルバージョンを使用するように指示できます。あなたの tsconfig.json

{
"compilerOptions": {
"paths": {
"mobx-react": ["../typings/modules/mobx-react"]
}
}
}

ヒントをくれた @adamrackis に感謝します。

インターフェイスを追加したり、既存のインターフェイスに欠落したメンバーを追加したりする必要があるだけの場合、タイピングパッケージ全体をコピーする必要はありません。代わりに、宣言マージを使用できます。

// my-typings.ts
declare module "plotly.js" {
interface PlotlyHTMLElement {
removeAllListeners(): void;
}
}

// MyComponent.tsx
import { PlotlyHTMLElement } from "plotly.js";

const f = (e: PlotlyHTMLElement) => {
e.removeAllListeners();
};

あなたは常にモジュールを実装する必要がなく、すばやく開始するためにモジュールを any としてインポートできます。

// my-typings.ts
declare module "plotly.js"; // each of its imports are `any`

明示的にインポートする必要がないため、これはアンビエントモジュール宣言として知られています。スクリプトモードの .ts ファイル(インポートやエクスポートなし)またはプロジェクト内の任意の場所にある .d.ts ファイルで AMD を実行できます。

また、アンビエント変数とアンビエント型の宣言を行うこともできます。

// ambient utility type
type ToArray<T> = T extends unknown[] ? T : T[];
// ambient variable
declare let process: {
env: {
NODE_ENV: "development" | "production";
};
};
process = {
env: {
NODE_ENV: "production",
},
};

tsconfig.jsonlib フィールドに組み込まれた型の宣言に含まれるこれらの例を見ることができます。