修复官方类型定义中的错误
如果在库的官方类型定义中遇到错误,可以将它们本地复制,并使用“paths”字段告诉 TypeScript 使用您的本地版本。在您的tsconfig.json
中
{
"compilerOptions": {
"paths": {
"mobx-react": ["../typings/modules/mobx-react"]
}
}
}
如果您只需要添加一个接口,或者向现有接口添加缺少的成员,则无需复制整个类型包。相反,您可以使用声明合并
// 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.json
的lib
字段中内置类型声明中看到这些示例