我希望将一个字符串缩小到一个字符串文字联合类型。换句话说,我想检查该字符串是否是我的文字联合类型的可能值之一,以便这将起作用(如果操作符couldbe
存在)。
type lit = "A" | "B" | "C";
let uni: lit;
let str = "B";
if(str couldbe lit){
uni = str;
} else {
doSomething(str);
}
我该如何实现这个目标?
我尝试使用 if (str instanceof lit)
, 但是那好像不起作用。使用 keyof
迭代字符串联合类型也无法解决,因为允许的值并不是真正的键。
一种方法是使用switch
,针对每个可能的值设置一个case,但如果lit
的允许值发生变化,则可能会导致细微的错误。