Лучший способ экспортировать как класс, так и типы в TypeScript - PullRequest
0 голосов
/ 26 апреля 2020

После этого вопрос 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 {
...
}

1 Ответ

1 голос
/ 26 апреля 2020

Вы можете экспортировать класс и интерфейс самостоятельно, без пространства имен:

export interface MyClassMethodOptions {
        width?: number;
        height?: number;
}

export default class MyClass {

    constructor(someParam?: string);

    someProperty: string[];

    myMethod(opts: MyClassMethodOptions): number;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...