Создать список / массив из пользовательских типов - PullRequest
0 голосов
/ 27 апреля 2020

Я хочу создать список или массив из всех возможных вариантов пользовательского типа.

Пример. Настраиваемый тип:

export type FruitType= 'Apple' | 'Orange' | 'Strawberry' | 'Banana'; 

Требуемый результат:

const FruitArray = ['Apple', 'Orange', 'Strawberry', 'Banana']

Это достижимо или жесткое кодирование списка - единственный способ?

Я работаю в React с машинопись

Ответы [ 2 ]

3 голосов
/ 27 апреля 2020

Поскольку TypeScript только что перенесен в JavaScript, информация о типе доступна только во время компиляции, но не во время выполнения. Вам нужно будет переопределить значение где-то, где они доступны во время выполнения.

Что вы можете сделать, это определить массив и затем определить тип на его основе:

const fruitArray = ['Apple', 'Orange', 'Strawberry', 'Banana'] as const;
type FruitType = typeof fruitArray[number];
const fruit: FruitType = 'Apple';

Однако FruitType допускает только те значения, которые фактически жестко закодированы в fruitArray с самого начала.

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

Если вы можете использовать enum вместо type, тогда вы можете написать следующий код:

enum FruitType {
  Apple = 'Apple',
  Orange = 'Orange',
  Strawberry = 'Strawberry',
  Banana = 'Banana',
}

const array = Object.values(FruitType);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...