在 TypeScript 中,如果你想要创建一个全局可用的类型,你可以在全局作用域中声明这个类型。通常,这可以通过以下几种方式实现:
-
在
.d.ts
文件中声明类型:
创建一个声明文件(例如globals.d.ts
),并在这个文件中使用declare
关键字来定义全局类型。这个文件不需要导入,TypeScript 会自动将其中的声明视为全局可用。// 在 globals.d.ts 文件中 declare type GlobalString = string; declare interface GlobalInterface { id: number; name: string; } // 然后在任何文件中,你可以直接使用 GlobalString 和 GlobalInterface let myString: GlobalString; let myObject: GlobalInterface;
-
增强现有的全局类型:
如果你想要扩展一个现有的全局类型(例如Window
或String
),你可以在.d.ts
文件中使用interface
来声明同名接口,TypeScript 将会自动将它们合并。// 在 custom.d.ts 文件中 interface Window { customProperty: string; } // 现在,Window 类型将包含一个名为 customProperty 的新属性 window.customProperty = "someValue";
-
使用全局命名空间:
在 TypeScript 中,你还可以使用namespace
关键字来声明全局可用的类型。这种方式在早期的 TypeScript 版本中更为常见。// 在一个脚本文件或 .d.ts 文件中 namespace MyApp { export type GlobalType = { id: number; name: string; }; } // 使用全局命名空间中的类型 let item: MyApp.GlobalType;
-
在全局模块中声明:
如果你在模块系统(如 CommonJS 或 ES6 模块)中工作,你仍然可以通过在.d.ts
文件中声明模块并导出类型来创建全局类型。// 在一个 .d.ts 文件中 declare module 'MyGlobalModule' { export type SomeGlobalType = { message: string; }; } // 你可以在任何地方通过导入来使用这个类型 import { SomeGlobalType } from 'MyGlobalModule';
使用 .d.ts
文件是 TypeScript 中创建全局类型的推荐方法,因为它不会污染全局命名空间,并且可以清楚地表明哪些类型是全局可用的。记得将这些声明文件包含在你的 TypeScript 项目配置中,这样 TypeScript 编译器就可以识别它们。通常,如果你的 tsconfig.json
文件配置正确,它会自动包含项目中的所有 .d.ts
文件。