【发布时间】:2020-08-09 23:08:12
【问题描述】:
遵循stackoverflow question(~2016)和打字稿about Class modules的官方文档
声明类模块声明文件应使用namespace,方式如下:
export = MyClass;
declare class MyClass {
constructor(someParam?: string);
someProperty: string[];
myMethod(opts: MyClass.MyClassMethodOptions): number;
}
declare namespace MyClass {
export interface MyClassMethodOptions {
width?: number;
height?: number;
}
}
如果我将此文档应用到我的项目中,我的 linter 会使用 no-namespace 规则 (doc about this rule) 向我尖叫:
ES2015 模块语法优于自定义 TypeScript 模块和命名空间。eslint@typescript-eslint/no-namespace 窥视问题(⌥F8)
还有
MyClass 已定义
这仍然是处理 Class 模块中类型的首选方式吗?
编辑 重要的是,该类默认保持导出
解决方案
import myClass from 'myclass.ts'
export default myClass
export interface myObject {
...
}
【问题讨论】:
标签: javascript typescript