【发布时间】:2017-01-22 12:15:22
【问题描述】:
由于 typescript 2.0 RC(甚至是 beta?),可以使用数字文字类型,如 type t = 1 | 2;。是否可以将类型限制为数字范围,例如0-255,类型中不写出256个数字?
在我的例子中,一个库接受从 0-255 的调色板的颜色值,我宁愿只列举几个,但将其限制为 0-255:
const enum paletteColor {
someColor = 25,
someOtherColor = 133
}
declare function libraryFunc(color: paletteColor | 0-255); //would need to use 0|1|2|...
【问题讨论】:
-
注意:枚举定义了一组命名的 numeric 常量,而不是新类型。因此,不需要声明可以传递数字而不是
paletteColors。 -
@Burt_Harris 是的。还需要一种将枚举限制为 0-255 的方法。也可以只使用索引器对象而不是枚举,尽管有点难看。无论哪种方式都不需要
|,在最好的情况下它应该只是paletteColor,如果它被限制为0-255,或者只是0-255。 -
注意:从 TS 2.4 开始,字符串文字现在可以作为枚举值 blogs.msdn.microsoft.com/typescript/2017/06/27/…
-
仅供参考,您所要求的称为“依赖类型”,TS 中不存在此功能。一些具有此功能的语言是 Agda、Idris、Coq。
标签: typescript types