打字稿:如何將相同的函數應用於不同類型的數組

時代

這個 typescript 函數應該適用於兩種不同類型的數組(即具有不同接口的數組),它們都有兩個共同的屬性(id 和 count)。該函數使用給定的 id 更新項目或任務的計數屬性。但是我在“查找”命令中收到打字稿錯誤:“表達式不可調用。” 如果我刪除其中一個接口,即如果我只將輸入參數“items”定義為一個項目數組 (Item[]) 或一個任務數組 (Task[]),它就可以工作。但我想將該函數應用於兩種類型的數組。

//interface definitions
export interface Item {
    id: number,
    count: number,
    other: number
}
export interface Task {
    id: number,
    count: number,
    more: string
}

//function
function UpdateCount(items: Item[] | Task[], id: number, count: number) {
   let item = items.find(obj => obj.id === id);
   if (item !== undefined) {
      item.count = count;
   }
}
缺口

我的解決方案是:

//interface definitions
interface BaseItem {
    id: number,
    count: number
}

export interface Item extends BaseItem {
    other: number
}
export interface Task extends BaseItem {
    more: string
}

//function
function UpdateCount<T extends BaseItem>(items: T[], id: number, count: number) {
   const item = items.find(i => i.id === id);
   if (!item) return; 
   item.count = count;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何將函數類型應用於函數聲明

如何將函數應用於每個組

如何將 TypeScript 泛型用於可以返回對像或數組的函數?

打字稿函數返回類型

定義泛型函數類型並應用於函數賦值

基於可選參數屬性函數的打字稿方法返回類型

如何將函數應用於數據幀,然後應用於數據幀列表?

將函數應用於數據集中的一組列

使用 dplyr 將函數應用於數據集的每組

如何將函數應用於函數中向量中列出的多列

將泛型類型傳遞給打字稿中的函數

將函數應用於以 x,y 坐標為參數的二維數組

將函數應用於兩個列表元素的每個組合

如何將數組轉換為不同類型

Pandas 為 pyspark 數據框應用函數替代(想要將整數數據類型列轉換為列表數據類型)

動態地將特定函數應用於不同的變量

將函數應用於 DataFrame 中的列

打字稿基於作為數組參數傳遞的對象的屬性返回類型

如何在 Kotlin 中將通用擴展函數用於兩種類型的數據類映射器

打字稿:當函數可以是多種函數類型時,函數參數出錯

如何將 numpy 向量化函數應用於 ndarray?

如何將我的函數應用於 JSON 文件中的所有值?

如何根據另一列的值將函數應用於多列?

打字稿推導出泛型類型成員函數的返回類型

如何根據過濾器推斷使打字稿限制數組類型?

如何重載具有相同類型和參數但返回類型不同的 call operator() 函數?

將函數應用於文件並輸出到數據幀的各個行

將自定義函數應用於整個數據框

將函數應用於 Pandas 數據幀 (lambda) 中的所有行