我有这样的类型,在扩展接口时覆盖单个类型:
type Omit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>; interface HTMLEvent<T> extends Omit<Event, 'target'> { target: T; }
现在我想创建一个事件类型,它将接受事件类型,例如mouseEvent和target类型。
我试过了:
interface EventType<E, T> extends Omit<E, 'target'> { target: T; } const e: EventType<MouseEvent, HTMLButtonElement>;
但有错误:
接口只能扩展对象类型或对象的交集 具有静态已知成员的类型。
我想我需要一个函数来创建一个类型。
IS接口 EventType 可能在typescript中?是否可以有一个泛型类型,而不需要为每个事件类型指定泛型接口。
EventType
对于接口继承的限制,错误是非常明显的。由于类型包含未解析的类型参数,因此typescript不允许在接口的extends子句中使用它。
您可以使用交叉点类型来获得类似的效果:
type EventType<E extends Event, T> = Omit<E, 'target'> & { target: T; }