访问工会中合并类型之一中可能缺少的工会类型属性的惯用方式是什么?访问工会类型属性的地道方式
type DataColumn = {
value: number;
};
type CalculatedColumn = {
calculation: string;
};
type Column = DataColumn | CalculatedColumn;
function getValue(c: Column) {
return c.value || c.calculation;
}
流量typecheck导致以下错误:
13: return c.value || c.calculation;
^property `calculation`. Property not found in
13: return c.value || c.calculation;
^object type
@dfkaye指出,在Twitter上,如果有抛出的 “默认” 情况下的错误,它的工作原理:
function e() {
throw new Error('foo');
}
function getValue(c: Column) {
return c.value || c.calculation || e();
}
有人可以解释一下:
- 为什么它有效?是故意的还是副作用?
- 为什么有必要?列类型始终为
value
或calculation
,因此应该不会发生错误情况。 - 有更好,更习惯的方法吗?
- 这是一种安全的方法,还是未来可能会破裂?
PS:看起来像TypeScript it can be done使用类型断言。
是的,但我不想修改数据(至少尚未)。 – dkl