给出一个枚举:
const enum BasicColor {
Red,
Green,
Blue
}
以及可以从上述enum
取值或任意数字的方法:
function foo(someColor: number | BasicColor) {
// do something here
}
我应该以这种方式键入以指示呼叫者这两种值都适合吗?
或者,由于使用number
或BasicColor
进行键入允许传递所有相同的值(因为enum
类型的参数采用任何数字),并且无论哪种情况,任一调用都将编译:
function bar(color: number) {
}
bar(BasicColor.Red);
function baz(color: BasicColor) {
}
baz(42);
不应该利用类型系统来提供文档吗?
答案 0 :(得分:1)
不应该利用类型系统来提供文档吗?
这不完全是关于文档的,我认为类型注释通常有助于理解代码。从这个角度来看,将其设为number | BasicColor
会更好,因为将事情明确化通常会更好。
此外,TypeScript开发人员继续在编译器中添加各种--strict
标志,因此将来有可能在严格模式下将任何数字作为enum
类型的参数传递将成为错误。