我有一个字符串值的枚举。我想将字符串值传递给枚举并从中获取值。
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”。
答案 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 enums
。 const
修饰符使enum变为只读,并告诉编译器不要生成反向映射;
export const enum OperationType {
CREATE = "CREATE",
UPDATE = "UPDATE"
}
答案 1 :(得分:0)
这里的问题是sendData fn定义中的参数类型。 那应该是一个字符串。您是在告诉ts这是一种Enum类型,而不是实际的字符串。
因此fn定义应如下所示:
function sendData(type: String) {
//Do some work
}