enum包含字符串和数字属性,从字符串/数字到enum的转换不是自动的,没有内置的方法。
你可以查看我的其他文章,关于typescript enum对象。
让我们声明Month枚举常量只包含字符串的属性。让我们在本教程中使用这个枚举对象。
export enum Month {
JAN,
FEB,
MAR,
APR,
MAY,
JUN
}
console.log(MONTH);
在typescript中把字符串转换成枚举
用字符串创建了Month枚举。
在typescript中,Enum属性是强类型的,在第一种方法中,Month enum接受字符串值并返回Enum对象。
如果启用了--noImplicitAny ,这将无法工作,并抛出一个错误。
// To Enum / number
var month : Month = Month["JAN"];
当--noImplicitAny 配置被启用时,其他方法。
我们使用keyof和typeof来获得枚举的字符串信息,用keyof typeof来投掷字符串并返回枚举对象。
const str = "FEB";
let month1:Month= str;
解析/转换数字为枚举
没有值的枚举被分配为0,1,2以上的值。
下面是一个convertNumberToEnum()接受Month对象和数字的方法,该方法检查一个数字是否不是枚举对象,它返回未定义。Month枚举对象有一个映射和其值的反向映射。
如果你打印enum对象,以下是其值
// mapping data - namesto values
JAN-0
FEB-1
MAR-2
APR-3
MAY-4
JUN-5
// Reverse mapping data - values to names
0-JAN,
1-FEB,
2-MAR,
3-APR,
4-MAY,
5-JUN
在运行时,Enum对象可以用以下代码来检索:在typescript中解析数字到enum对象的代码
private convertNumberToEnum(object: Month, x:number): Month{
if (typeof object[x] === 'undefined') {
console.log('Invalid Enum number');
return undefined;
}
return object;
}
console.log(convertNumberToEnum(Month,1))//FEB