Typescript 基于泛型';s型

Typescript 基于泛型';s型,typescript,generics,Typescript,Generics,当TEvent类型为DefaultEvent时,我想重构以下内容,为handleEvent方法的extractor参数指定默认实现 而不是打电话: handleEvent({value:“test”},(e)=>e.value); 如果可能,我希望以下内容是等效的: handleEvent({value:“test”}); type DefaultEvent={ 值:字符串 } 类型特定事件={ specificValue:字符串 } 功能手柄( e:TEvent, 提取器:(e:TEven

TEvent
类型为
DefaultEvent
时,我想重构以下内容,为
handleEvent
方法的
extractor
参数指定默认实现

而不是打电话:

handleEvent({value:“test”},(e)=>e.value);
如果可能,我希望以下内容是等效的:

handleEvent({value:“test”});
type DefaultEvent={
值:字符串
}
类型特定事件={
specificValue:字符串
}
功能手柄(
e:TEvent,
提取器:(e:TEvent)=>字符串
//当TEvent为DefaultEvent类型时,默认提取器实现应为(e)=>e.value
) {
控制台日志(提取器(e));
}
handleEvent({value:“test”},(e)=>e.value);
handleEvent({specificValue:“test2”},(e)=>e.specificValue);

您可以通过函数重载来处理类型,但仍然需要提供缺少的提取器是函数实现。这是

谢谢-这很有效。有没有一种方法可以做到这一点而不显式地为SpecificEvent设置重载?SpecificEvent可以是无限多的不同事件<代码>将类型“TEvent”转换为类型“SpecificEvent”可能是错误的,因为两种类型都没有充分重叠。如果这是有意的,请先将表达式转换为“未知”。ts(2352)当在实现中省略
extends DefaultEvent | SpecificEvent
时。@Dynamic我已在回答中更新了游乐场链接,请检查