0
下面的代碼失敗,因爲在output
可變打字錯誤的編譯:打字稿編譯器錯誤一般類型具有繼承
類型「{項:ModelInterface; }'不能分配給 'ResponseInterface'類型。財產'物品'的類型是不相容的。 類型'ModelInterface'不可分配給'T'類型。
interface ModelInterface {
}
interface ResponseInterface<T> {
item: T;
}
class Store {
get<T extends ModelInterface>(): ResponseInterface<T> {
let output: ResponseInterface<T> = {
item: this.getModel()
};
return output;
}
getModel(): ModelInterface {
return null;
}
}
的get
方法明確定義T
總是會延長ModelInterface
,我爲什麼不能設置一個明確的ModelInterface
對象爲item
沒有一個錯誤?
我可以通過做克服這個錯誤:
let output: ResponseInterface<T> = {
item: this.getModel() as T
};
但它看起來像一個bug,我失去了一些東西或打字稿編譯器只是在這種情況下會失敗呢?
我試過在typescript playground但它也失敗了。
有什麼想法?
謝謝您的回答,這非常有意義。然而,在我的真實情況下,事情並不像示例中那麼簡單。我的商店基類是按照你的例子定義的,但返回一個'ModelInterface'的方法是在'ModelInterface'接口本身定義的(稱爲'importValues'的方法返回一個'ModelInterface',因爲它唯一可以知道的類型)。但我現在明白爲什麼編譯器會返回一個錯誤,我爲此感謝你。 – Stnaire