我想知道,之间是否有区别(实际或最佳实践方面)
interface Fruit {
cost?: number;
}
和
interface Fruit {
cost: number | undefined;
}
如果行为方面存在实际差异,那是什么?
如果没有,为什么人们会更喜欢
| undefined
或?:
(或反之亦然)?
有点困惑,因为我两种都看过,不确定是否真的有真正的原因选择其中一种,或者是否只是归结为偏好。
谢谢!
一个区别是
cost: number | undefined;
要求 属性存在,并且具有类型为 number
或 undefined
的值。相反,cost?: number
允许该属性根本不存在。
编译失败:
interface Fruit {
cost: number | undefined;
}
const x: Fruit = {};
要让它发挥作用,你必须这样做:
interface Fruit {
cost: number | undefined;
}
const x: Fruit = { cost: undefined };
但这成功了:
interface Fruit {
cost?: number;
}
const x: Fruit = {};
当有替代方案可用时,显式键入
undefined
可能会很乏味,因此您可能更喜欢 cost?: number
选项。