[英]Destructuring of optional props in Typescript
假设我有 object 和这种形状的可选道具
interface MyObject {
requiredProp: SomeType;
optionalProp?: {
innerData: {
innerProp1: string;
innerProp2: number;
innerProp3?: boolean;
}
}
}
const obj:MyObject = { ... }
但似乎我不能轻易地解构optionalProp
const {innerProp1, innerProp2, innerProp3} = obj.optionalProp?.innerData;
因为
类型“...”上不存在属性“innerProp1” 不明确的'。
与解构变量的 rest 相同。
有没有一种优雅而简短的方法来保持类型安全?
您可以使用空的 object 作为后备。
const {innerProp1, innerProp2, innerProp3} = obj.optionalProp?.innerData ?? {};
但是您应该记住在使用每个 innerProp 之前检查它是否未定义。
除了其他正确答案之外,这也可以通过其他几种方式解决......
undefined
或null
的情况下可以满足解构const { innerProp1, innerProp2, innerProp3 } = obj.optionalProp?.innerData || {};
optionalProp
进行null-ness
检查。if (obj.optionalProp) {
const { innerProp1, innerProp2, innerProp3 } = obj.optionalProp?.innerData;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.