【问题标题】:How to emulate "T extends enum" generic constraint?如何模拟“T extends enum”通用约束?
【发布时间】:2019-03-26 12:01:29
【问题描述】:

I'm already aware that TypeScript does not allow enums as constraints,但是有没有办法——甚至是一个骇人听闻的方式——来获得类似的行为?

export enum StandardSortOrder {
    Default,
    Most,
    Least
}

export enum AlternativeOrder {
    Default,
    High,
    Medium,
    Low
}

export interface IThingThatUsesASortOrder<T extends enum> { // doesn't compile
    sortOrder: T;
}

【问题讨论】:

    标签: typescript enums


    【解决方案1】:

    打字稿中没有这样的约束。你能做的最好的就是使用枚举的基本类型,在这种情况下是number(如果你需要使用字符串枚举,那么你可以使用stringstring | number,如果你想同时允许)

    export enum StandardSortOrder {
        Default,
        Most,
        Least
    }
    
    export enum AlternativeOrder {
        Default,
        High,
        Medium,
        Low
    }
    
    export interface IThingThatUsesASortOrder<T extends number> { 
        sortOrder: T;
    }
    
    let a: IThingThatUsesASortOrder<StandardSortOrder>
    let a2: IThingThatUsesASortOrder<AlternativeOrder>
    

    【讨论】:

    • 我害怕这个......这似乎是一个巨大的遗漏。
    猜你喜欢
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 2012-02-02
    • 1970-01-01
    • 2011-02-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多