Получить тип объединения из наблюдаемого значения массива во время выполнения

У меня есть код Typescript со следующим определением типа:

export type MeasurementContext = 'height' | 'speed' | 'temperature';

Я хотел бы получить этот список измерений из запроса конфигурации на сервер во время выполнения, а не из константных значений, но я не могу заставить его работать.

Я пытался использовать что-то вроде этого:

let list = getConfigMeasurements() as const // returns ['height' | 'speed' | 'temperature']
type NeededUnionType = typeof list[number]; // 'height'|'speed'|'temperature';

Но он возвращает число — это тип, но используется как переменная.


person FrankRP    schedule 02.07.2019    source источник


Ответы (1)


«Я хотел бы получить этот список измерений из запроса конфигурации на сервер во время выполнения».

Типы Typescript не существуют во время выполнения, все они удаляются во время компиляции программы; Однако есть несколько способов генерировать код на основе типов, использующих API преобразователя машинописного текста... в этом случае я бы сказал, что он не подпадает под идиоматический машинописный текст, и поэтому его следует избегать.

https://github.com/Microsoft/TypeScript/wiki/FAQ#what-is-type-erasure

person Shanon Jackson    schedule 02.07.2019
comment
Да, я знал это подтверждение, но я все равно думал получить во время выполнения, потому что я не знаю типов объединения до того, как класс будет оцениваться в любом методе. Я приму ваш ответ к сведению. - person FrankRP; 02.07.2019