【发布时间】:2020-07-17 08:32:58
【问题描述】:
我有一个 type 定义,从不同的 npm 包中导入,包含 100 多个联合字符串,如下所示:
type SomeType = "a" | "b" | "c" \\ | ... and it goes and goes
如果一个字符串变量属于这个SomeType,我想检查我的代码。有没有办法做到这一点不需要需要我编写列出所有可能值的辅助函数 (as described here for instance)?
在我的情况下,列出所有值可能不是最好的,因为该 npm 包中的类型值将来可能会发生变化并且因为它们的负载很大。我正在寻找一些更聪明的方法,如果它存在的话。
【问题讨论】:
-
Typescript 类型/接口不会转译成代码,这意味着您想要做的检查是不可能的。更好的方法是将该类型定义为枚举,然后根据该枚举检查您的值
-
@MorShemesh:OP 写道,该类型来自不受他们控制的第三方包。他们不能将其更改为枚举。
-
错过了 - 你是对的
-
如果字符串是所描述的值之一,您是否要 typecheck 或在 runtime 期间检查,例如if 语句?
-
@zzrv 我需要在运行时进行。抱歉,不准确
标签: typescript types casting