我正在尝试使用typeScript Union Types . 我有一个带有数字属性的类,但我希望它有三个特殊情况:Infinity,None和Auto
Infinity和None分别用 Number.POSITIVE_INFINITY
和 NULL
表示,但我不知道如何处理自动值 .
该值最初出现在表示为字符串的XML文档中 . 例如 <element myValue="123"/>
<element myValue="-4096"/>
<element myValue="infinity"/>
<element myValue="auto"/>
或 <element/>
如何创建可用作数字但仍具有可用自动值的联合类型 . 我想到了一个带有数字和枚举的联合类型,但我不确定如何充分利用它 .
有小费吗?
class MyClass {
name: string;
duration: number; // Want to support None/Null, Infinity and Auto
}
2 回答
考虑在类型注释中使用字符串文字
'auto'
:(这里我使用
undefined
而不是null
来表示缺失值 . 如果您还没有使用TypeScript 2.0,请省略undefined
. )此类型注释允许您将数字(包括
Number.POSITIVE_INFINITY
),undefined
和'auto'
分配给duration
,但不能分配任何其他字符串 .样品用法:
我们也不会 . 您需要举例说明一个自动值,例如是
1
有效的auto
值 . 我怀疑它是,我怀疑所有数字都是有效的 . 所以我会使用类型注释duration : number | null