Javascript 在TypeScript中导出类和类型的最佳方法
随后(~2016年)和typescript的官方文件 说明类模块声明文件应使用Javascript 在TypeScript中导出类和类型的最佳方法,javascript,typescript,Javascript,Typescript,随后(~2016年)和typescript的官方文件 说明类模块声明文件应使用名称空间以下方式: export=MyClass; 声明类MyClass{ 构造函数(someParam?:字符串); someProperty:字符串[]; myMethod(选项:MyClass.MyClassMethodOptions):编号; } 声明命名空间MyClass{ 导出接口MyClassMethodOptions{ 宽度?:数字; 高度?:数字; } } 如果我将此文档应用到我的项目中,我的lin
名称空间
以下方式:
export=MyClass;
声明类MyClass{
构造函数(someParam?:字符串);
someProperty:字符串[];
myMethod(选项:MyClass.MyClassMethodOptions):编号;
}
声明命名空间MyClass{
导出接口MyClassMethodOptions{
宽度?:数字;
高度?:数字;
}
}
如果我将此文档应用到我的项目中,我的linter会用无名称空间规则()向我尖叫:
ES2015模块语法优于自定义TypeScript模块和名称空间。eslint@typescript-eslint/no名称空间
偷窥问题(⌥F8)
而且
MyClass已定义
这仍然是处理类模块中类型的首选方法吗
编辑
该类在默认情况下保持导出状态是很重要的
解决方案
您可以自行导出类和接口,而无需命名空间:
export interface MyClassMethodOptions {
width?: number;
height?: number;
}
export default class MyClass {
constructor(someParam?: string);
someProperty: string[];
myMethod(opts: MyClassMethodOptions): number;
}
嘿此解决方案的问题是默认情况下不会导出MyClass。在我的模块中就是这样。所以我会有这样一个错误:`×TypeError:myClass不是一个构造函数或者更新了我注释中的代码以将类作为default导出,现在这不是一个类型,而是实际的类否?你想导出哪些类型?我的错,这实际上是可行的。我从class.ts中导入了这个类,并将它导出到这个文件中,它成功了。谢谢
export interface MyClassMethodOptions {
width?: number;
height?: number;
}
export default class MyClass {
constructor(someParam?: string);
someProperty: string[];
myMethod(opts: MyClassMethodOptions): number;
}