: 和 | 之间有什么区别?在 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
选项。
我想知道,
之间是否存在差异(实际或最佳实践)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
选项。