我有以下型別:
type Person = {
name: string
age: number
value?: number
}
我也有模擬物件陣列:
const arr = [
{
name: 'A',
age: 1
},
{
name: 'B',
age: 2
}
]
現在我想添加到陣列屬性中的每個物件value
const newArr = arr.map(item => {
return {
...item,
value: fun(item)
}
})
這是一個增加價值的功能
const add = (item: Person): number => {
return item.value 1
}
現在我們有一個 TypeScript 問題:
Object is possibly 'undefined'.ts(2532)
我很確定我不能這樣做,因為我需要回傳號碼?
const add = (item: Person): number => {
return item.value && item.value 1
}
我該如何處理?
uj5u.com熱心網友回復:
因為您定義value為可選,所以您的add函式無法確定它是否存在。因此,它的行為沒有明確定義。item如果傳遞了沒有value屬性的an,它應該回傳什么?
您可以將value其設為必需屬性/創建新介面:
interface ValuedPerson extends Person {
value: number;
}
const add = (item: ValuedPerson): number => {
return item.value 1
}
或添加一個默認值,正如這個答案所暗示的那樣。
在OP的評論之后:您可以通過添加感嘆號告訴TypeScript它確實存在:
const add = (item: Person): number => {
return item!.value 1
}
uj5u.com熱心網友回復:
Typescript 對你大喊大叫,因為你仍然沒有回傳一個數字。
const add = (item: Person): number => {
return item.value && item.value 1
}
如果存在,這將回傳一個數字,如果不存在,它將回傳undefined。valueitem
任何一個
制作value一個必需的屬性。
或者
進行三元檢查。
const add = (item: Person): number => {
return item.value ? item.value 1 : 0
}
我假設,您想將 0 添加到valueifvalue不存在
打字稿現在應該很高興。
uj5u.com熱心網友回復:
由于您的價值財產是number | undefinedTS 抱怨它。
uj5u.com熱心網友回復:
實際上我更喜歡使用 (??) Nullish coalescing Operator
const add = (item: Person): number => {
return (item?.value ?? 0) 1
}
你也可以看到
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/481448.html
標籤:打字稿
上一篇:如何發送從檔案讀取的資料作為NodeJS中快速路由的回應?
下一篇:如何推斷深層物體?
