Может ли тип в Typescript определяться как комбинация символов? - PullRequest
1 голос
/ 10 ноября 2019

Позвольте мне объяснить на примере.

В поле с именем Component вы должны иметь эти значения> "M", "B", "A.

Так что выдавайте определимся: type Component = "M" | "B" | "A";

Пока все хорошо. Но должна быть возможность иметь комбинацию из них, чтобы назначить так: const MyComponent : Component = "MB"; или const MyComponent : Component = "BA";

Какопределить это?

Ответы [ 2 ]

1 голос
/ 10 ноября 2019

Просто найдите интерфейс для ваших данных - похоже, у вас есть простой небольшой набор значений в качестве данных домена для свойства Component. Поэтому, возможно, вам следует просто расширить свой тип (union):

type Component = "M" | "B" | "A" | "MA"

Что вы думаете о введении enum (string)?

enum Direction {
    A: "A",
    B: "B",
    M: "M",
    AB: "AB",
    // more values
}

В конце - не думайте оТип данных в качестве валидатора. Так что, возможно, в вашем случае вам просто нужно использовать простой тип «string» и проверять его по требованию или во время инициализации.

1 голос
/ 10 ноября 2019

В настоящее время это невозможно с помощью TypeScript, но вы можете проверить такую ​​строку с помощью RegEx, следующий поток приводит пример того, как это сделать: Как я могу разбить строку на сегменты по n символов?

Вы также можете использовать это регулярное выражение:

let value = 'MBA';

// string length 1-3 and contains M,B,A combinations
let validatorRegEx = /^([M|B|A]{1,3}$)/i; 
if(validatorRegEx.test(value)) {
    // code ...
}
...