2016-11-08 141 views
0

我很难将来自env变量的字符串转换为enum。打字稿,枚举和字符串

这里的枚举:

enum Environment { 
    Test = 1, 
    Development, 
    Production 
} 

export default Environment; 

而且这里是我一直在努力:

export default class GlobalParameters { 
    public static Env: Environment = Environment[<string>process.env.NODE_ENV]; 
} 
console.log(process.env.NODE_ENV) // Gives "Development" 
let str = String(process.env.NODE_ENV); // Gives "Development" 
console.log(Environment[str]) //Gives undefined 
Object.seal(GlobalParameters); 
+0

可能的重复[如何将字符串转换为在TypeScript中枚举?](http://stackoverflow.com/questions/17380845/how-to-convert-string-to-enum-in-typescript) – martin

+0

@马丁我使用这种方法 - 从env var创建一个字符串,但是当我尝试检索一个枚举时,我仍然未定义 –

回答

0

你的代码似乎很好地工作:

enum Environment { 
    Test = 1, 
    Development, 
    Production 
} 

console.log(Environment[2]) // "Development" 
let str = String(Environment[2]); 
console.log(str); // "Development" 
console.log(Environment[str]) // 2 

code in playground

+0

是的,当我更改 'let str:string = String(process.env.NODE_ENV);' 到 'let str:string = String(“Development”);' 它工作正常。 –

0

从来没有心,当我在命令行定义的环境变量,必须添加了一些空白字符,因为当我改变检索字符串

let str: string = String(process.env.NODE_ENV).replace(" ", ""); 

它工作正常。