从TypeScript 1.8开始,您可以创建一个字符串文字类型来定义类型,并为值列表创建一个具有相同名称的对象 . 它模仿字符串枚举的预期行为(基于David Sherret对Create an enum with string values in Typescript的回答),如:

type MyStringEnum = "member1" | "member2";

const MyStringEnum = {
    Member1: "member1" as MyStringEnum,
    Member2: "member2" as MyStringEnum
};

我需要ExtendedMyStringEnum,它将类型限制为所有MyStringEnum的类型并添加另一个 . 所以我这样做:

type ExtendedMyStringEnum = MyStringEnum | "member3";

const ExtendedMyStringEnum = {
    Member3: "member3" as ExtendedMyStringEnum
};

一切正常,除了我希望能够通过ExtendedMyStringEnum访问所有3个成员 - Member1,Member2和Member3,如:

ExtendedMyStringEnum.Member1
ExtendedMyStringEnum.Member2
ExtendedMyStringEnum.Member3

这对用户来说会更舒服(我认为),如果我需要遍历所有属性,我只需要为ExtendedMyStringEnum而不是MyStringEnum和ExtendedMyStringEnum . 这可行吗?