可以将 Typescript 中的类型定义为具有字符组合吗?

Can be a type in Typescript defined to have a combination of characters?

让我举例说明。

在名为 Component 的字段中,您应该能够获得这些值> "M"、"B"、“A.

所以你继续定义: type Component = "M" | "B" | "A";

到目前为止一切顺利。但也应该可以将这些组合起来,像这样分配: const MyComponent : Component = "MB"; 要么 const MyComponent : Component = "BA";

如何定义?

目前使用 TypeScript 无法做到这一点,但您可以使用 RegEx 验证此类字符串,以下线程给出了如何执行此操作的示例: How can I split a string into segments of n characters?

您也可以使用这个正则表达式:

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 ...
}

只需为您的数据找到一个接口 - 看起来您有一小部分简单的值作为 Component 属性 的域数据。所以也许你应该扩展你的类型(联合):

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

你对引入枚举(字符串)有什么看法?

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

最后 - 不要将数据类型视为验证器。因此,也许在您的情况下,您应该只使用简单类型 "string" 并按需或在初始化时对其进行验证。

从 TypeScript 4.1 开始,这可以通过 template literal types 实现。 例如:

type Component = "M" | "B" | "A";
type ComponentCombination = `${Component}${Component}`;

const comb: ComponentCombination = "MB";