我已经知道 TypeScript 不允许将枚举作为约束,但是有没有一种方法(即使是一种黑客方法)来获得类似的行为?
export enum StandardSortOrder {
Default,
Most,
Least
}
export enum AlternativeOrder {
Default,
High,
Medium,
Low
}
export interface IThingThatUsesASortOrder<T extends enum> { // doesn't compile
sortOrder: T;
}
Run Code Online (Sandbox Code Playgroud)
Typescript 中没有这样的限制。您能做的最好的事情就是使用枚举的基本类型,在本例中是number(如果您需要使用字符串枚举,那么您将使用stringorstring | 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>
Run Code Online (Sandbox Code Playgroud)