以字符串打字稿形式打印枚举

时间:2019-03-17 16:00:25

标签: typescript enums

我的枚举:

enum VerificationStatus {
    pending, 
    rejected, 
    verified
}

我正在尝试以以下格式打印枚举:

console.log(myEnumtoString(VerificationStatus.pending))

应打印字符串

"VerificationStatus.pending"

我尝试过:

console.log(`${typeof VerificationStatus}.${VerificationStatus[VerificationStatus.pending]}`)

但是我明白了:

"object.pending"

3 个答案:

答案 0 :(得分:0)

这可能有效,但是有点笨拙:

console.log(`${Object.keys({VerificationStatus})[0]}.${VerificationStatus[VerificationStatus.pending]}`)

TypeScript将枚举编译为变量,这些变量具有作为属性的值以及值名称和索引的映射。

这意味着上面的代码使用此内部知识来打印枚举被编译到的变量的名称。它很脆,我不建议您使用它。

由于TypeScript没有正式的方法来获取枚举名称,我只需要明确地打印它即可:

console.log(`VerificationStatus.${VerificationStatus[VerificationStatus.pending]}`)

答案 1 :(得分:0)

这样定义您的枚举

enum VerificationStatus {
    pending='pending', 
    rejected='rejected', 
    verified='verified'
}

答案 2 :(得分:0)

要使其正常工作,您需要一个ts-nameof之类的变压器

用法:

nameof.full(VerificationStatus.pending); // "VerificationStatus.pending"