首页 > 解决方案 > 强制通用类型匹配函数定义

问题描述

是否可以强制泛型类型不仅是 type Function,而且还要匹配特定的函数定义?

例如,我想出的最接近的方法是:

class MyClass<T = (S : any, E : EventArgs) => void> {
    ...
}

这当然有效,但它并不强制这种类型,它只是默认类型。我两个都可以

let myClass = new MyClass<string>();

或者

let myClass = newClass<(any, number) => void>();

我不希望这两者成为可能。我希望类型始终与(any, EventArgs) => void.

这在 TypeScript 中可行吗?

标签: typescriptgenerics

解决方案


对的,这是可能的。要定义约束 extends关键字,应使用:

class MyClass<T extends (S: any, E: EventArgs) => void> {
     // ...
}

正如您已经弄清楚的那样,=指定泛型类型参数的默认值。


推荐阅读