簡體   English   中英

試圖了解Typescript泛型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM