TS 3.7: необязательныйChaining nullishCoalescing не работает для типов объединения? - PullRequest
0 голосов
/ 04 ноября 2019

Я ожидаю, что новые возможности TypeScript 3.7 будут поддерживать эти случаи:

export interface Foo {
  aaa: string;
  bbb: string;
  ccc: string;
}

export interface Bar {
  ddd: string;
  eee: string;
  fff: string;
}

type Data = Foo | Bar;

const doSomething = (data: Data) => {
  const optionalChaining = data?.aaa //error
  const nullishCoalescing = data.bbb ?? "default"; //error

  if ("ccc" in data) {
    //OK this works
  }
}

Есть ли другой способ справиться с этим, кроме последнего, который также работал в более ранних версиях ts? детская площадка: http://www.typescriptlang.org/play/?ts=3.7-Beta#code/KYDwDg9gTgLgBASwHY2FAZgQwMbDgMQgjgG8BYAKDjk1oC44BnGKZAcwG5LqAjPh5qySducbOIEt2XCgF9KlUJFiIUaLLjgAhTFFKiAJkclCRVOMEsnpo9HevCZ8ipRgBPMHgAimGJjgAvAREcAA+2roylNgQSMxwBhAAyhAAtsAwABbsgXAAFAa+mAw+fgCUgQB8+uYxcfAQYDAIsZgANgDCmZjIOUGFfgD8AHS0mKJ18UgArm1tCIyZHRDtwIzYfQlFw3w8cIODcABEBsBYszBHUeYI6PlH4thHqlvlNdTUAPSfAPIA0nAsgs4AB3aAAa0YomcziAA

...