如何从打字稿中的枚举中获取字符串值?

时间:2020-06-02 18:11:47

标签: javascript node.js typescript class enums

我有一个字符串值的枚举。我想将字符串值传递给枚举并从中获取值。

export enum OperationType  {
    CREATE = "CREATE",
    UPDATE = "UPDATE"
}

我也有课

class Item {
type:string;
id:string
date:string
}

现在我在下面的函数中调用

function sendData(type:OperationType) {
//Do some work
}

现在我想像这样传递枚举中的值,但我不能这样做

//Here item.type = "CREATE"

sendData(OperationType[item.type])

但是现在允许我得到错误类型的编译时错误。请告诉我我该如何实现?

编辑: 错误是

元素隐式具有“ any”类型,因为类型“ string”的表达式不能用于索引类型“ typeof OperationType”。

2 个答案:

答案 0 :(得分:0)

在您的情况下,我将使用工会:

type OperationType = "CREATE" | "UPDATE";

class Item {
  type: OperationType;
  id: string;
  date: string;
}

function sendData(type: OperationType) {
  //Do some work
}

此方法提供相同的IDE智能和类型检查。否则,您只需更改type: OperationType;

您也可以使用const enumsconst修饰符使enum变为只读,并告诉编译器不要生成反向映射;

export const enum OperationType  {
    CREATE = "CREATE",
    UPDATE = "UPDATE"
}

答案 1 :(得分:0)

这里的问题是sendData fn定义中的参数类型。 那应该是一个字符串。您是在告诉ts这是一种Enum类型,而不是实际的字符串。

因此fn定义应如下所示:

function sendData(type: String) {
//Do some work
}