Suppose I have object with optional props of this kind of shape
interface MyObject {
  requiredProp: SomeType;
  optionalProp?: { 
    innerData: {
      innerProp1: string;
      innerProp2: number;
      innerProp3?: boolean;
    }
  }
}
const obj:MyObject = { ... }
But it seems that I can't easily destructure that optionalProp
const {innerProp1, innerProp2, innerProp3} = obj.optionalProp?.innerData;
because
Property 'innerProp1' does not exist on type '... | undefined'.
and same for the rest of destructured variables.
Is there an elegant and short way to do this keeping the type safety?
You could use the empty object as a fallback.
const {innerProp1, innerProp2, innerProp3} = obj.optionalProp?.innerData ?? {};
But you should remember to check that each innerProp is not undefined before using it.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With