: 和 | 之间有什么区别?在 TypeScript 中未定义?

What's the difference between ?: and | undefined in TypeScript?

我想知道,

之间是否存在差异(实际或最佳实践)
interface Fruit {
  cost?: number;
}

interface Fruit {
  cost: number | undefined;
}

如果在行为方面存在实际差异,那是什么?

如果没有,为什么人们更喜欢 | undefined?:(反之亦然)?

有点困惑,因为我已经看到了两者,并且不确定是否真的有真正的原因更喜欢一个而不是另一个,或者它是否只是归结为偏好。

谢谢!

一个区别是 cost: number | undefined; 要求 属性 存在,并且有一个类型为 number 或 [=15 的值=].相反,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 选项。