用数字键入参数枚举,出于文档目的

时间:2018-07-12 17:55:44

标签: typescript

给出一个枚举:

const enum BasicColor {
    Red,
    Green,
    Blue
}

以及可以从上述enum取值或任意数字的方法:

function foo(someColor: number | BasicColor) {
    // do something here
}

我应该以这种方式键入以指示呼叫者这两种值都适合吗?

或者,由于使用numberBasicColor进行键入允许传递所有相同的值(因为enum类型的参数采用任何数字),并且无论哪种情况,任一调用都将编译:

function bar(color: number) {
}
bar(BasicColor.Red);

function baz(color: BasicColor) {
}
baz(42);

不应该利用类型系统来提供文档吗?

Playground

1 个答案:

答案 0 :(得分:1)

  

不应该利用类型系统来提供文档吗?

这不完全是关于文档的,我认为类型注释通常有助于理解代码。从这个角度来看,将其设为number | BasicColor会更好,因为将事情明确化通常会更好。

此外,TypeScript开发人员继续在编译器中添加各种--strict标志,因此将来有可能在严格模式下将任何数字作为enum类型的参数传递将成为错误。