2017-04-06 81 views
1

家伙我想问问,如果我可以创建一个看起来像这样如何创建打字稿并返回字符串枚举

export enum CompanyMemberTypeEnum { 
    DIRECTORS, 
    SHAREHOLDERS, 
    DIRECTORS_AND_SHAREHOLDERS 
} 

CompanyMemberTypeEnum.DIRECTORS将返回0右枚举? 但如何,如果我想创建一个函数,可以得到一个枚举的字符串,这样

CompanyMemberTypeEnum.getList(CompanyMemberTypeEnum.DIRECTORS) 

会返回董事

在枚举文件

,这可能吗?

+1

可能重复[在Typescript中使用字符串值创建枚举](http://stackoverflow.com/questions/15490560/create-an-enum-with-string-values-in-typescript) – toskv

回答

0

首先,您需要创建一个基类Enum<T>类。

export class Enum<T> { 
    public constructor(public readonly value: T) {} 
    public toString() { 
    return this.value.toString(); 
    } 
} 

创建您的课程,延伸Enum<T>;

export class CompanyMemberTypeEnum extends Enum<string> { 
    public static readonly DIRECTORS = new Enum('DIRECTORS'); 
    public static readonly SHAREHOLDERS= new Enum('SHAREHOLDERS'); 
    public static readonly DIRECTORS_AND_SHAREHOLDERS = new Enum('DIRECTORS_AND_SHAREHOLDERS'); 
} 

现在,您可以使用您的枚举类似;

console.log(CompanyMemberTypeEnum.DIRECTORS); // Enum { value: 'DIRECTORS' } 
console.log(CompanyMemberTypeEnum.DIRECTORS.value); // DIRECTORS 
console.log(CompanyMemberTypeEnum.DIRECTORS.toString()); // DIRECTORS 
+0

我可以使枚举默认返回'CompanyMemberTypeEnum.DIRECTORS //返回0'? 和'CompanyMemberTypeEnum.DIRECTORS.getString()//返回'Directors'字符串? 并感谢您的答案! :) – Nobita

1

您可以定义枚举,如:

export enum CompanyMemberTypeEnum { 
    DIRECTORS = <any>'Directors', 
    SHAREHOLDERS = <any>'ShareHolders', 
    DIRECTORS_AND_SHAREHOLDERS = <any>'Directors and shareholders' 
} 
3

此前打字稿2.4,打字稿仅支持基于数量的枚举,但现在就可以开箱。

正如toskv指出的那样,SO的回答已经提供here

作为例子:

enum BeerTypes { 
    lager = "Lager", 
    ipa = "IPA" 

};