打字稿数字或数字枚举类型?

时间:2021-03-05 05:19:33

标签: javascript typescript typescript-typings

我正在尝试创建一个这样的函数:

function test_func(arg1: number: NumericEnum) {
    return number / 2 + 5;
}

其中 arg1 可以是数字值或定义为整数的枚举值,如下所示:

enum Num {
   x = 1;
   y = 2;
}

所以函数可以是 test_func(1)test_func(Num.x)

有没有办法为arg1的类型定义定义一个这样的类型?

2 个答案:

答案 0 :(得分:1)

Num 这样的数字枚举的值已经是 number,所以你不需要做任何特殊的事情来包含它们。我们可以说我们的函数接受任何 numberNum.x 只是解析为数字文字 1 的属性访问器,因此可以使用 Num.x 调用此函数。

function test_func(arg1: number) {
    return arg1 / 2 + 5;
}

enum Num {
   x = 1,
   y = 2,
}

test_func(1)
test_func(Num.x)

Typescript Playground Link

一些变化:

  • 枚举使用逗号 , 而不是分号 ;
  • test_func 中的变量是 arg1 而不是 numbernumber 是类型。

答案 1 :(得分:0)

你必须这样写枚举。

enum NumericEnum {
   x = 1,
   y = 2
}

现在,下面的函数可以接收一个数字或 Enum 作为参数。

test_func(arg1: number | NumericEnum) {
    return arg1 / 2 + 5;
}

stackblitz 检查我的实施。