Проверка, принадлежит ли строковая переменная определению типа объединения - PullRequest
2 голосов
/ 05 апреля 2020

У меня есть определение type, импортированное из другого пакета npm, который состоит из более чем 100 строк в объединении, например:

type SomeType = "a" | "b" | "c" \\ | ... and it goes and goes

Я хотел бы проверить свой код, если строковая переменная принадлежит этому SomeType. Есть ли способ сделать то, что не требует от меня написания вспомогательных функций, перечисляющих все возможные значения (, как описано здесь, например, )?

В моем случае, перечисление всех значений может быть не лучшим, поскольку значения типов из этого пакета npm могут измениться в будущем и из-за их загрузки. Я ищу какой-нибудь умный способ, если он существует.

1 Ответ

0 голосов
/ 06 апреля 2020

Одной из целей машинописи является выполнение полного стирания типа при javascript выходе.

На самом деле (typcript v3.8) объединение литеральных типов, таких как:

type SomeType = "a" | "b" | "c";

не преобразуются в какие-либо значения времени выполнения.

Если реализовано предложение оператора распространения по типам объединения , восполнит этот пробел.

Между тем, как уже предложил в вышеупомянутую проблему, это хорошее предложение:

Просить эту третью сторону изменить свою библиотеку, чтобы те Типы объединения выражаются в виде перечислений, решающих эту проблему, так как перечисления генерируют словарь с двойным отображением во время выполнения.

// type SomeType = "a" | "b" | "c";
enum SomeType {
  a,
  b,
  c,
}

let my_string = "a";
let isOk = SomeType.hasOwnProperty(my_string);

my_string = "z";
let isNotOk = SomeType.hasOwnProperty(my_string);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...