Angular5-typescript中声明类型的数组

Angular5-typescript中声明类型的数组,typescript,angular5,Typescript,Angular5,我试图从declare类型获得数组 使用enum,我可以实现如下目标: export enum Day { SU = 'su', MO = 'mo', TU = 'tu', WE = 'we', TH = 'th', FR = 'fr', SA = 'sa', } getDays(): String[] { return Object.values(Day); } 输出将是['su'、'mo'等] 我想从这个例子中得到类似的结

我试图从declare类型获得数组

使用enum,我可以实现如下目标:

export enum Day {
    SU = 'su',
    MO = 'mo',
    TU = 'tu',
    WE = 'we',
    TH = 'th',
    FR = 'fr',
    SA = 'sa',
} 

getDays(): String[] {
    return Object.values(Day);
}
输出将是
['su'、'mo'等]

我想从这个例子中得到类似的结果:

export declare type WeekDays = 'su' | 'mo' | 'tu' | 'we' | 'th' | 'fr' | 'sa';
输出类似于:
['su'、'mo'等]

有什么想法吗?
我尝试了
Object.entries()
Object.getOwnPropertyNames()
。不幸的是,它不起作用。

typescrpt中的所有类型都只是元数据,在运行时不可用。因此无法检索字符串文字类型中的有效字符串列表

平日
只是一个类型,类型没有任何运行时存在,因此我们无法访问该类型在运行时保存的任何信息。枚举在运行时表示为对象,这就是为什么我们可以从中提取信息。有关类型与值的讨论,请参阅更多

我们唯一能做的就是构造一个函数来检索值,这需要我们传入一个对象文本,该对象文本正好包含枚举中的字符串。虽然这需要我们重述字符串,但编译器将检查我们是否没有添加任何额外的字符串,也没有任何缺少的字符串,因此这可能足够好了:

export declare type WeekDays = 'su' | 'mo' | 'tu' | 'we' | 'th' | 'fr' | 'sa';
function getValues<T extends string>(values: { [P in T]: P }) : T[]{
    return Object.values(values);
}
// Ok values are all stated, the values are correctly stated.
getValues<WeekDays>({fr: 'fr',mo: 'mo',sa:'sa',su:'su',th:'th',tu:'tu',we:'we'})
// Error values don't match
getValues<WeekDays>({fr: 'frrr',mo: 'mo',sa:'sa',su:'su',th:'th',tu:'tu',we:'we'})
// Error values missing
getValues<WeekDays>({mo: 'mo',sa:'sa',su:'su',th:'th',tu:'tu',we:'we'})
// Error values extra values
getValues<WeekDays>({funDay: 'funDay', fr: 'fr', mo: 'mo',sa:'sa',su:'su',th:'th',tu:'tu',we:'we'})
export declare type WeekDays='su'|'mo'|'tu'|'we'|'th'|'fr'|'sa';
函数getValues(值:{[P in T]:P}):T[]{
返回Object.values(值);
}
//所有正常值均已说明,值已正确说明。
GetValue({fr:'fr',mo:'mo',sa:'sa',su:'su',th:'th',tu:'tu',we:'we'})
//错误值不匹配
getValues({fr:'frr',mo:'mo',sa:'sa',su:'su',th:'th',tu:'tu',we:'we'})
//缺少错误值
GetValue({mo:'mo',sa:'sa',su:'su',th:'th',tu:'tu',we:'we'})
//错误值额外值
GetValue({funDay:'funDay',fr:'fr',mo:'mo',sa:'sa',su:'su',th:'th',tu:'tu',we:'we'})