typescript - 如何模拟 "T extends enum"通用约束?

标签 typescript enums

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 中没有这样的限制。您能做的最好的事情是使用枚举的基本类型,在本例中为 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>

关于typescript - 如何模拟 "T extends enum"通用约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55356672/

相关文章:

lambda - 将参数传递给 TypeScript 中的回调函数

reactjs - 如何将其他类型导入我的 TypeScript 自定义声明文件?

typescript - 你能为每个文件启用 TypeScript 严格模式吗?

c++ - 使用 include 定义枚举

java - 如何访问另一个类中的特定枚举值?

reactjs - 为什么 TypeScript 无法对 React props 进行类型检查?

xcode - "Generic parameter ' T ' could not be inferred"重载方法时出错

ios - 导入 Obj-C 文件,该文件导入自动生成的 Swift header

c++ - 将一个枚举映射到另一个枚举

javascript - 如何更改 Yup/Formik 中的默认错误文本?