![](/img/trans.png)
[英]TypeScript: cannot seem to understand this generics usage for promise
[英]Trying to understand Typescript generics
我有以下功能:
interface ExtraModels extends Model {
unknown: string
}
const write = async (data: ExtraModels[]) => {
console.log(data[0].unknown)
}
哪個在工作。 現在我要更改:
const write = async <T = ExtraModels>(data: T[]) => {
console.log(data[0].unknown)
}
但是它不會與錯誤一起編譯:
屬性“未知”在類型“ T”上不存在。ts(2339)
我不明白我在做什么錯。 根據我的研究,這是正確的。
這是有效的,但它沒有達到您的期望。 = ExtraModels
表示如果無法從參數推斷T
,則T
將為ExtraModels
。 但是T
可以是任何類型,包括不擴展ExtraModels
(這就是為什么編譯器不允許您訪問ExtraModels
屬性的ExtraModels
)
您想將T
約束為擴展ExtraModels
的類型。 其語法是T extends ExtraModels
。 由於T
必須擴展ExtraModels
打字稿將使您可以訪問ExtraModels
屬性。
const write = async <T extends ExtraModels>(data: T[]) => {
console.log(data[0].unknown)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.