我有一個接口這個簽名有什麼問題? (打字稿-2.5)
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.");
}
}
編譯器抱怨說:
接口 - 不正確實施
(...)
- 類型謂詞 '值是觸覺' 不是分配給 '值 TExpected'
- 類型 '觸覺' 是不能分配給輸入 'TExpected'
- 類型謂詞 '值是觸覺' 不是分配給 '值 TExpected'
怎麼回事?這是類型檢查器中的錯誤嗎?
PS。它在Ts-2.3下正在編譯。
我猜你真的想要返回值是一個類型的警衛,如果我改變它返回布爾它適用於我 –
@ TitianCernicova-Dragomir但改變返回值從'值是T'to'bool'使得它不像OP那樣是一個普通的類型守衛,是嗎? – Pac0
版本2.4引入了更嚴格的泛型類型推斷,這可能導致該問題。不幸的是,我很難理解爲什麼會發生這種情況。更奇怪的是,它沒有用戶定義的類型警衛。我會建議在官方的TypeScript存儲庫中提交一個問題。 –