【发布时间】:2026-02-06 23:25:02
【问题描述】:
我想将字符串缩小为字符串文字联合。换句话说,我想检查字符串是否是我的文字联合的可能值之一,以便这将起作用(如果运算符 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 对每个可能的值使用一种情况,但如果lits 允许的值发生变化,这可能会导致细微的错误。
【问题讨论】:
-
lit类型在运行时不存在,因此您不能这样使用它。也许改用枚举? -
关于switch语句注释,见answer。
-
@NitzanTomer 这实际上是一个非常好的主意,看起来更清晰,更容易理解。
标签: string typescript types literals unions