跳至主要内容

修复官方类型定义中的错误

如果在库的官方类型定义中遇到错误,可以将它们本地复制,并使用“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字段中内置类型声明中看到这些示例