是否可以是定义为具有字符组合的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";