我需要創建一個通用的輔助方法,它
- 可以接受任何物件的陣列,但至少它應該有
id
- 回傳一個新的物件陣列,其中每個物件都有
isActive
屬性
這是我的代碼
export const useActionLinks = <T,>(
data: T & { id: string }[]
) => {
let active = '';
function mapper(d: T) {
return {
...d,
isActive: d.id === active, // Error id does not exist on type T
};
}
const itemsData = data.map(mapper); // Error
console.log(itemsData);
};
但是 ts 在函式映射器和 data.map 呼叫中抱怨 2 點。
uj5u.com熱心網友回復:
它適用于您的型別的一些更改。
export const useActionLinks = <T extends {id: string}>(
data: T[]
) => {
let active = '';
function mapper(d: T) {
return {
...d,
isActive: d.id === active, // Error id does not exist on type T
};
}
const itemsData = data.map(mapper); // Error
console.log(itemsData);
return itemsData
};
useActionLinks([
{a:1, id:"s"}, {b:2, id:'p'}
])
第一個變化是在第一行。我更改了您的泛型以使用id
. 這將修復這兩個錯誤。您無需明確提及回傳型別,因為它會自動推斷為(T & { isActive: boolean; })[]
.
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/533295.html
標籤:打字稿