我有一个界面
export interface ITypeAssertions
{
isOfTypeElseFail<TExpected extends TActual, TActual>(value: TActual, oxIsOfType: (xVal: TActual) => boolean): value is TExpected;
}
和实施
export class NodeJsTestingFrameworkAdapter implements ITypeAssertions
{
isOfTypeElseFail<TExpected extends TActual, TActual>(value: TActual, oxIsOfType: (xVal: TActual) => boolean): value is TExpected
{
throw new Error("Method not implemented.");
}
}
编译器抱怨说:
接口 - 不正确实现的
(...)
怎么了?这是类型检查器中的错误吗?
PS。它在Ts-2.3下编译得很好。
答案 0 :(得分:1)
目前没有机会让它正常工作,正如github.com/Microsoft/TypeScript/issues/18202中的回复所述。
答案 1 :(得分:0)
您必须小心将interface
(而不是接口方法)和class
(而不是接口实现方法)定义为通用:
interface ITypeAssertions<TActual, TExpected extends TActual>
{
isOfTypeElseFail(value: TActual, oxIsOfType: (xVal: TActual) => boolean): value is TExpected;
}
export class NodeJsTestingFrameworkAdapter<TActual, TExpected extends TActual> implements ITypeAssertions<TActual, TExpected>
{
isOfTypeElseFail (value: TActual, oxIsOfType: (xVal: TActual) => boolean): value is TExpected
{
return true;
}
}
这会在Typescript playground上进行编译。
不幸的是,根据你的评论,这不是你想要的,因为它迫使你用每对类型实现类。