首页 > 解决方案 > 打字稿数字或数字枚举类型?

问题描述

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

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的类型定义定义这样的类型?

标签: javascripttypescripttypescript-typings

解决方案


像这样的数字枚举的值Num已经存在number,因此您不需要做任何特别的事情来包含它们。我们可以说我们的函数接受 any 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)

打字稿游乐场链接

一些变化:

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

推荐阅读