2016-11-08 145 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(" ", ""); 

它工作正常。