我有一個形狀如下的函式:
type itemType = {
id: string;
[x: string]: unknown;
}
// my function
(item: itemType) => {do stuff here}
我想使用這個函式并傳遞一個至少包含一個 id 鍵的物件,有沒有辦法做到這一點?我試圖這樣做,但得到錯誤:
type bigItemType = {
id: string;
name: string;
}
(item as bigItemType) => { console.log(item.name) }
我可以通過將其轉換為函式體來繞過它,但是可以在引數中執行它嗎?
錯誤:
Type 'bigItemType' provides no match for the signature '(item: itemType): void'
uj5u.com熱心網友回復:
我不確定我是否正確理解了您的問題。但是您可以簡單地使用運算子擴展另一種型別&:
type itemType = {
id: string;
[x: string]: unknown;
}
type bigItemType = itemType & {
name: string;
}
const func = (item: bigItemType) => { console.log(item.name) }
現在bigItemType擴展itemType并添加name到它。
你可以在這里測驗它。
uj5u.com熱心網友回復:
您可以使用交集和并集:
type ItemType = { id: string; } | { id: string; } & { [key: string]: unknown; }
說明@位置樹物件型別宣告
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/433065.html
標籤:打字稿
上一篇:禁止使用ESLint的MouseEvent(Typescript)
下一篇:為什么泛型型別箭頭函式顯示錯誤?
