Невозможно передать реквизиты, когда перечисление используется для определения типа пропса - PullRequest
0 голосов
/ 19 июня 2020

Я использую React + Typescript.

В одном из моих компонентов я объявил интерфейс как

enum PersonDept {
   CIVIL = 'civil',
   PRIVATE = 'private'
}

interface IPerson {
   dept: PersonDept.CIVIL | PersonDept.PRIVATE
}

Теперь, если мне нужно использовать компонент person в другом месте, тогда Я должен экспортировать enum, чтобы передать тип dept prop. Есть ли какой-нибудь способ пропустить экспорт enum.

Также, если мне все равно нужно экспортировать enum, это правильный способ сделать это?

1 Ответ

1 голос
/ 19 июня 2020

В соответствии с вашими типами свойство dept принимает только значения перечисления PersonDept.

Итак, да, вы должны использовать перечисление и импортировать его на каждом использование, это желаемое поведение и то, как оно обычно используется.

Есть ли какой-нибудь способ пропустить экспорт enum

Один из способов - не использовать перечисление:

interface IPerson {
   dept: 'civil' | 'private'
}

И более хакерский и не рекомендуемый способ - установить перечисление как глобальную переменную, например, прикрепить его к window:

// Don't do it, just know it is possible
window._IPreson = PersonDept
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...