Импорт Enum в Интерфейс ломает Интерфейс - PullRequest
0 голосов
/ 05 июня 2018

Я хочу импортировать перечисление в интерфейс.(использование машинописного текста 2.5) Но это сломается при использовании интерфейса в другом интерфейсе.Вот пример кода


allEnums.ts

export enum ButtonType {
    Top = 1,
    Bottom = 2
}

other enums following ...

buttonInterface.d.ts

import { ButtonType } from "allEnums";
interface ButtonInterface {
    buttonType: ButtonType
}

formInterface.d.ts

interface FormInterface { 
    buttos: ButtonInterface[]
}

Результатом является ошибка в formInterface.d.ts

Не удается найти имя ButtonInterface


Что помогает импортировать ButtonInterface вFormInterface, как это

import { ButtonInterface } from "buttonInterface";

Но импорт интерфейсов не является хорошим решением, я думаю

Ответы [ 2 ]

0 голосов
/ 05 июня 2018

Я думаю, что импорт enum как type более чист, потому что не нужно писать код для включения интерфейсов

allEnums.ts

export enum ButtonType {
    Top = 1,
    Bottom = 2
}

buttonInterface.d.ts

type ButtonType = import('allEnums').ButtonType;
interface ButtonInterface {
    buttonType: ButtonType
}

formInterface.d.ts

interface FormInterface { 
    buttos: ButtonInterface[]
}
0 голосов
/ 05 июня 2018

Начиная с TypeScript 2.9 вы можете импортировать тип без импорта содержащего его модуля:

import("./buttonInterface").ButtonInterface

Вы можете использовать это в своем сценарии, если вы используете TypeScript 2.9 иливыше.Вы также можете указать псевдоним:

type ButtonInterface = import('./buttonInterface').ButtonInterface;

interface FormInterface { 
    buttos: ButtonInterface[]
}

Возможно, ваша IDE / текстовый редактор этого не устраивает, но проверьте, запустив tsc, если вы видите ошибки в редакторе.

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