TypeScript - 对象可能未定义
我有以下类型:
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
}
我应该如何处理这个?
答案#1
由于你的 value 属性是 number | undefined,TypeScript 会对此报错。
答案#2
因为你将 value 定义为可选的,所以你的 add 函数无法确定它是否存在。因此,它的行为没有明确定义。如果传递的 item 没有 value 属性,它应该返回什么?
你可以让 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
}
