在Typescript中将String数组转换为Enum

时间:2018-01-28 05:41:59

标签: arrays typescript object types enums

我正在玩一些Typescript。

假设我有一个object,例如

let colors = {
    RED: "r",
    GREEN: "g",
    BLUE: "b"
}

现在我想将其转换为enum类型

enum Colors = {
    RED = "r",
    GREEN = "g",
    BLUE = "b"
}

更新

我希望为 colors 对象生成typings 如果我向colors对象添加另一个key,它应该包含在typings中。

如果我这样做

colors['YELLOW'] = "y"

然后生成的typings应为

declare enum colors {
    RED = "r",
    GREEN = "g",
    BLUE = "b",
    YELLOW = "y"
}

相反,生成类型是

declare const colors {
     [x: string]: string        
}

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:-1)

Enums« 枚举允许我们定义一组命名常量。使用枚举可以更容易地记录意图,或创建一组不同的案例。 TypeScript提供基于数字和基于字符串的枚举。

TypeScript 2.4 + String enums - 在TypeScript 2.4之前,TypeScript仅支持基于数字的枚举,在这种情况下,只需将字符串文字强制转换为key3 { key4 "value4 with spaces" } 分配,使用2.4+然后将不再需要任何

any

Java脚本 Standard Style

enum Colors {
    RED = <any>"R",
    GREEN = <any>"G",
    BLUE = <any>"B",
}

签入TypeScript小提琴fiddlesaladtypescriptlang

在效用函数下方,从字符串列表中创建K:V可能会对您有所帮助。

var Colors;
(function (Colors) {
    Colors["RED"] = "r";
    Colors["GREEN"] = "g";
    Colors["BLUE"] = "b";
})(Colors || (Colors = {}));

@see