繁体   English   中英

在TypeScript中将字符串转换为枚举

[英]Convert string to enum in TypeScript

我将TypeScript 2.2.1与目标ES5一起使用

我有几个下面的枚举

enum PermissionLevel {
    ACCOUNT_OWN,
    ACCOUNT_OTHER,
    USER_OWN
}

enum Permission {
    ACCOUNT_CREATE,
    USER_CREATE
}

我有一个输入JSON,如下所示

{
    "ACCOUNT_OWN": [
        "USER_CREATE",
        "ACCOUNT_CREATE"
    ],
    "ACCOUNT_OTHER": [
        "USER_CREATE"
    ]
}

我想将此输入存储为Map<Permission, Array<PermissionLevel>>

以下是我的代码

        // assume authJson is the input and is a valid JSON.
        this.userPermissions = new Map<Permission, Array<PermissionLevel>>();
        for (let [level, permissions] of Object.entries(authJson)) {
            let newLevel: PermissionLevel = <any>PermissionLevel[level];
            for (let perm of permissions) {
                let newPermission: Permission = <any>Permission[perm];
                if (this.userPermissions.get(newPermission)) {
                    this.userPermissions.set(newPermission, this.userPermissions.get(newPermission).concat(newLevel));
                } else {
                    this.userPermissions.set(newPermission, new Array<PermissionLevel>().concat(newLevel));
                }
            }
        }

        console.log(JSON.stringify(this.userPermissions));

最后一条语句的输出为空:(。不知道我在做什么错。

更新 :我只是发现下面有运行时错误行

EXCEPTION: Uncaught (in promise): ReferenceError: PermissionLevel is not defined

这是TS小提琴-https: //jsfiddle.net/hrwyc6zv/1/

JavaScript中的地图对象不是JSON。 因此,JSON.stringify不显示其实际内容。

Firefox中的小测试:

var x = new Map()
x.set('a','b')
-> Map { a: "b" }
JSON.stringify(x)
-> "{}"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM