После этого вопрос stackoverflow (~ 2016 г.) и официальная документация машинописного текста о Class
модулях
Заявлено, что Файл объявления модуля класса должен использовать 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;
}
}
Если я применяю эту документацию к моему проекту, мой линтер кричит мне по правилу no-namespace
( do c об этом правиле ):
Синтаксис модуля ES2015 предпочтительнее пользовательских модулей и пространств имен TypeScript. eslint@typescript-eslint/no-namespace Проблема Peek (⌥F8)
, а также
MyClass уже определен
Это все еще предпочтительный способ обработки типов в модулях класса?
Редактировать Это важно чтобы класс оставался экспортированным по умолчанию
Solution
import myClass from 'myclass.ts'
export default myClass
export interface myObject {
...
}