swc/crates/swc_ecma_parser/tests/tsc/optionalChainingInference.ts

32 lines
899 B
TypeScript
Raw Normal View History

// https://github.com/microsoft/TypeScript/issues/34579
declare function unbox<T>(box: { value: T | undefined }): T;
declare const su: string | undefined;
declare const fnu: (() => number) | undefined;
declare const osu: { prop: string } | undefined;
declare const ofnu: { prop: () => number } | undefined;
const b1 = { value: su?.length };
const v1: number = unbox(b1);
const b2 = { value: su?.length as number | undefined };
const v2: number = unbox(b2);
const b3: { value: number | undefined } = { value: su?.length };
const v3: number = unbox(b3);
const b4 = { value: fnu?.() };
const v4: number = unbox(b4);
const b5 = { value: su?.["length"] };
const v5: number = unbox(b5);
const b6 = { value: osu?.prop.length };
const v6: number = unbox(b6);
const b7 = { value: osu?.prop["length"] };
const v7: number = unbox(b7);
const b8 = { value: ofnu?.prop() };
const v8: number = unbox(b8);