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

是否可以是定义为具有字符组合的Typescript中的类型?,typescript,typescript-typings,string-literals,Typescript,Typescript Typings,String Literals,让我举例说明 在名为组件的字段中您应该能够获得这些值>“M”、“B”、“a” 因此,请继续定义: type Component=“M”|“B”|“A” 到目前为止还不错。但也可以将以下各项组合指定为: const MyComponent:Component=“MB” 或 const MyComponent:Component=“BA” 如何定义该字符串?目前无法使用TypeScript进行此操作,但您可以使用正则表达式验证此类字符串,下面的线程给出了一个如何执行此操作的示例: 您也可以使用此正

让我举例说明

在名为
组件的字段中
您应该能够获得这些值>“M”、“B”、“a”

因此,请继续定义:
type Component=“M”|“B”|“A”

到目前为止还不错。但也可以将以下各项组合指定为:
const MyComponent:Component=“MB”
const MyComponent:Component=“BA”


如何定义该字符串?

目前无法使用TypeScript进行此操作,但您可以使用正则表达式验证此类字符串,下面的线程给出了一个如何执行此操作的示例:

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

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

目前使用TypeScript无法实现这一点,但您可以使用RegEx验证此类字符串,下面的线程给出了一个如何进行验证的示例:

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

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

只需为您的数据找到一个接口-看起来您有一个简单的小值集作为
组件
属性的域数据。因此,也许您应该扩展您的类型(union):

您对引入枚举(字符串)有何看法


最后,不要将数据类型看作验证器,所以在您的情况下,您应该只使用简单类型“string”“并根据需要或在初始化时对其进行验证。

只需为您的数据找到一个接口-看起来您有一组简单的值作为
组件
属性的域数据。因此,也许您应该扩展您的类型(联合):

您对引入枚举(字符串)有何看法


最后,不要将数据类型看作验证器。因此,在您的情况下,您可能只需要使用简单的类型“string”,并在需要时或在初始化时对其进行验证。

从TypeScript 4.1开始,这在以下情况下是可能的。 例如:


从TypeScript 4.1开始,这在以下情况下是可能的。 例如:


嗯,也许将来某个时候这会是个解决办法嗯,也许将来某个时候这会是个解决办法
enum Direction {
    A: "A",
    B: "B",
    M: "M",
    AB: "AB",
    // more values
}
type Component = "M" | "B" | "A";
type ComponentCombination = `${Component}${Component}`;

const comb: ComponentCombination = "MB";