From f33a70b6d93d9ed44a3fea5919ade38b2ef072d2 Mon Sep 17 00:00:00 2001 From: Tisha kharade Date: Fri, 20 Mar 2026 16:16:40 +0530 Subject: [PATCH 1/2] fixed --- src/compiler/checker.ts | 6 +++++- tests/cases/fourslash/issue63276.ts | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 tests/cases/fourslash/issue63276.ts diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 0567712f11da3..15016b910b4e8 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -9130,7 +9130,11 @@ export function createTypeChecker(host: TypeCheckerHost): TypeChecker { return false; } if ((isPropertySignature(annotatedDeclaration) || isPropertyDeclaration(annotatedDeclaration)) && annotatedDeclaration.questionToken) { - return getTypeWithFacts(type, TypeFacts.NEUndefined) === typeFromTypeNode; + // When `exactOptionalPropertyTypes` is enabled we interpret optional properties as written, + // so reusing the existing annotation even if it doesn't include `undefined` is fine. + // When it's disabled, optional properties implicitly include `undefined`, so the annotation + // without `| undefined` must *not* be treated as equivalent. + return exactOptionalPropertyTypes ? getTypeWithFacts(type, TypeFacts.NEUndefined) === typeFromTypeNode : false; } if (isParameter(annotatedDeclaration) && hasEffectiveQuestionToken(annotatedDeclaration)) { return getTypeWithFacts(type, TypeFacts.NEUndefined) === typeFromTypeNode; diff --git a/tests/cases/fourslash/issue63276.ts b/tests/cases/fourslash/issue63276.ts new file mode 100644 index 0000000000000..1fc93171a027d --- /dev/null +++ b/tests/cases/fourslash/issue63276.ts @@ -0,0 +1,21 @@ +/// +// +// Regression test for GH#63276: "Missing undefined for hover". +// +// @strict: true +// @exactOptionalPropertyTypes: false + +//// type X/*1*/ = { +//// a?: A; +//// b?: A; +//// c?: A; +//// }; +//// +//// type A = {}; + +verify.quickInfoAt("1", `type X = { + a?: A | undefined; + b?: A | undefined; + c?: A | undefined; +}`); + From 850c19b583ace6b59ddd0dfa4719d63632342ba9 Mon Sep 17 00:00:00 2001 From: Tisha kharade Date: Fri, 20 Mar 2026 23:25:18 +0530 Subject: [PATCH 2/2] Update baselines for GH#63276 hover fix --- ...nmentCompatFunctionsWithOptionalArgs.types | 4 +- .../assignmentToInstantiationExpression.types | 8 +- .../reference/assignmentTypeNarrowing.types | 16 +- ...BindingElementWithLiteralInitializer.types | 8 +- .../checkJsxChildrenProperty12.types | 16 +- .../checkJsxChildrenProperty13.types | 8 +- .../reference/checkJsxChildrenProperty3.types | 8 +- .../reference/checkJsxChildrenProperty4.types | 8 +- ...checkJsxIntersectionElementPropsType.types | 4 +- .../reference/classIsSubtypeOfBaseType.types | 4 +- .../reference/commonTypeIntersection.types | 24 +- ...itionalTypeInstantiationUsingDefault.types | 4 +- ...eBasedOnIntersectionWithAnyInTheMix2.types | 36 +-- .../reference/contextualTypeFromJSDoc.types | 16 +- .../contextuallyTypedJsxAttribute.types | 8 +- .../contextuallyTypedJsxAttribute2.types | 4 +- ...ty(exactoptionalpropertytypes=false).types | 4 +- .../reference/controlFlowAliasing.types | 16 +- .../reference/controlFlowDeleteOperator.types | 56 ++-- .../reference/controlFlowGenericTypes.types | 16 +- .../reference/controlFlowOptionalChain.types | 268 +++++++++--------- .../reference/controlFlowOptionalChain3.types | 16 +- ...declarationEmitComputedPropertyName1.types | 4 +- ...eclarationEmitComputedPropertyNameEnum1.js | 2 +- ...arationEmitComputedPropertyNameEnum1.types | 8 +- ...eclarationEmitComputedPropertyNameEnum2.js | 4 +- ...arationEmitComputedPropertyNameEnum2.types | 8 +- ...eclarationEmitComputedPropertyNameEnum3.js | 2 +- ...arationEmitComputedPropertyNameEnum3.types | 8 +- ...ationEmitComputedPropertyNameSymbol1.types | 8 +- ...ationEmitComputedPropertyNameSymbol2.types | 8 +- .../declarationEmitOptionalMethod.types | 4 +- ...ertyCheckingWhenTargetIsIntersection.types | 20 +- tests/baselines/reference/deleteChain.types | 88 +++--- .../destructuringAssignmentWithDefault2.types | 88 +++--- .../reference/destructuringControlFlow.types | 48 ++-- ...ternAndAssignment9SiblingInitializer.types | 12 +- ...gParameterDeclaration10(strict=true).types | 8 +- ...ngParameterDeclaration9(strict=true).types | 4 +- ...iteralProperty_computedNameNegative1.types | 8 +- .../reference/elementAccessChain.types | 44 +-- .../emitClassExpressionInDeclarationFile.js | 4 +- ...genericCallInferenceConditionalType2.types | 20 +- ...cMappedTypeIntersectionAssignability.types | 20 +- .../reference/indexSignatures1.types | 4 +- ...lineJsxFactoryDeclarationsLocalTypes.types | 140 ++++----- .../interfaceWithMultipleBaseTypes2.types | 8 +- ...sectionMemberOfUnionNarrowsCorrectly.types | 8 +- ...nOfTypeVariableHasApparentSignatures.types | 4 +- .../reference/intersectionPropertyCheck.types | 16 +- .../intersectionsAndOptionalProperties.types | 12 +- ...jsDeclarationsInterfaces(target=es2015).js | 4 +- .../jsDeclarationsInterfaces(target=es5).js | 4 +- ...jsxEmptyExpressionNotCountedAsChild2.types | 4 +- .../jsxIntrinsicElementsCompatability.types | 4 +- .../reference/jsxPropsAsIdentifierNames.types | 4 +- .../logicalAssignment8(target=es2015).types | 16 +- .../logicalAssignment8(target=es2020).types | 16 +- .../logicalAssignment8(target=es2021).types | 16 +- .../logicalAssignment8(target=esnext).types | 16 +- .../reference/logicalAssignment9.types | 12 +- .../reference/mappedTypesArraysTuples.types | 8 +- .../mergedInstantiationAssignment.types | 36 +-- .../methodSignaturesWithOverloads.types | 8 +- .../methodSignaturesWithOverloads2.types | 40 +-- .../reference/narrowingIntersection.types | 8 +- ...ObjectUnionNestedExcessPropertyCheck.types | 4 +- .../objectLiteralContextualTyping.types | 4 +- .../reference/objectLiteralNormalization.js | 12 +- .../objectLiteralNormalization.types | 28 +- .../objectTypesWithOptionalProperties.types | 4 +- ...ertyAssignableToStringIndexSignature.types | 32 +-- .../parameterDestructuringObjectLiteral.types | 4 +- ...TypesWhenAppropriatelyContextualized.types | 20 +- .../parserShorthandPropertyAssignment1.types | 4 +- .../reference/primitiveUnionDetection.types | 4 +- .../reference/propertyAccessChain.types | 32 +-- ...tersectionCheckCorrectlyCachesErrors.types | 4 +- .../spellingSuggestionJSXAttribute.types | 8 +- .../baselines/reference/spreadDuplicate.types | 20 +- .../spreadIdenticalTypesRemoved.types | 8 +- ...ns(exactoptionalpropertytypes=false).types | 64 ++--- .../reference/spreadOverwritesProperty.types | 8 +- ...ty(exactoptionalpropertytypes=false).types | 8 +- ...btypingWithObjectMembersOptionality2.types | 16 +- ...btypingWithObjectMembersOptionality3.types | 16 +- ...btypingWithObjectMembersOptionality4.types | 16 +- ...subtypingWithOptionalProperties.errors.txt | 2 +- .../subtypingWithOptionalProperties.types | 32 +-- .../reference/thisTypeSyntacticContext.types | 36 +-- .../reference/tsxAttributeErrors.types | 4 +- .../reference/tsxAttributeInvalidNames.types | 8 +- .../reference/tsxAttributeResolution11.types | 4 +- .../reference/tsxAttributeResolution6.types | 4 +- .../reference/tsxAttributeResolution7.types | 4 +- .../tsxFindAllReferences1.baseline.jsonc | 68 ++++- .../reference/tsxGenericAttributesType1.types | 36 +-- .../reference/tsxGenericAttributesType2.types | 12 +- .../reference/tsxGenericAttributesType3.types | 8 +- .../reference/tsxGenericAttributesType4.types | 8 +- .../tsxGenericAttributesType5.errors.txt | 2 +- .../tsxGenericAttributesType6.errors.txt | 2 +- .../reference/tsxGenericAttributesType9.types | 8 +- .../reference/tsxInArrowFunction.types | 4 +- .../tsxIntrinsicAttributeErrors.types | 4 +- .../reference/tsxInvokeComponentType.types | 12 +- .../reference/tsxSfcReturnNull.types | 4 +- .../tsxSfcReturnNullStrictNullChecks.types | 4 +- ...sxSfcReturnUndefinedStrictNullChecks.types | 4 +- ...xStatelessFunctionComponentOverload1.types | 16 +- ...xStatelessFunctionComponentOverload4.types | 16 +- .../tsxStatelessFunctionComponents2.types | 12 +- .../tsxStatelessFunctionComponents3.types | 12 +- ...FunctionComponentsWithTypeArguments3.types | 4 +- tests/baselines/reference/tsxTypeErrors.types | 4 +- .../tsxUnionMemberChecksFilterDataProps.types | 8 +- .../reference/tsxUnionTypeComponent1.types | 8 +- .../reference/typeArgumentInference.types | 12 +- ...typeArgumentInferenceWithConstraints.types | 12 +- .../typeFromContextualThisType.types | 16 +- .../typeFromPrivatePropertyAssignmentJs.types | 36 +-- ...NarrowsIndexedAccessOfKnownProperty5.types | 44 +-- ...NarrowsIndexedAccessOfKnownProperty6.types | 44 +-- .../typePredicatesOptionalChaining1.types | 20 +- .../reference/typesWithOptionalProperty.types | 28 +- .../unionExcessPropsWithPartialMember.types | 8 +- .../weakTypeAndPrimitiveNarrowing.types | 12 +- 127 files changed, 1161 insertions(+), 1097 deletions(-) diff --git a/tests/baselines/reference/assignmentCompatFunctionsWithOptionalArgs.types b/tests/baselines/reference/assignmentCompatFunctionsWithOptionalArgs.types index c4839551bd4a4..806c0ab6858e5 100644 --- a/tests/baselines/reference/assignmentCompatFunctionsWithOptionalArgs.types +++ b/tests/baselines/reference/assignmentCompatFunctionsWithOptionalArgs.types @@ -4,8 +4,8 @@ function foo(x: { id: number; name?: string; }): void; >foo : (x: { id: number; name?: string; }) => void > : ^ ^^ ^^^^^ ->x : { id: number; name?: string; } -> : ^^^^^^ ^^^^^^^^^ ^^^ +>x : { id: number; name?: string | undefined; } +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >id : number > : ^^^^^^ >name : string | undefined diff --git a/tests/baselines/reference/assignmentToInstantiationExpression.types b/tests/baselines/reference/assignmentToInstantiationExpression.types index 76db87269b4d8..d4cfe92f1c537 100644 --- a/tests/baselines/reference/assignmentToInstantiationExpression.types +++ b/tests/baselines/reference/assignmentToInstantiationExpression.types @@ -2,8 +2,8 @@ === assignmentToInstantiationExpression.ts === let obj: { fn?: () => T } = {}; ->obj : { fn?: () => T; } -> : ^^^^^^^ ^^^ +>obj : { fn?: (() => T) | undefined; } +> : ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >fn : (() => T) | undefined > : ^^ ^^^^^^^ ^^^^^^^^^^^^^ >{} : {} @@ -16,8 +16,8 @@ obj.fn = () => 1234; > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ >obj.fn : (() => T) | undefined > : ^^ ^^^^^^^ ^^^^^^^^^^^^^ ->obj : { fn?: () => T; } -> : ^^^^^^^ ^^^ +>obj : { fn?: (() => T) | undefined; } +> : ^^^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^ >fn : (() => T) | undefined > : ^^ ^^^^^^^ ^^^^^^^^^^^^^ >() => 1234 : () => number diff --git a/tests/baselines/reference/assignmentTypeNarrowing.types b/tests/baselines/reference/assignmentTypeNarrowing.types index c6756e2d9e838..8e5a6895ff229 100644 --- a/tests/baselines/reference/assignmentTypeNarrowing.types +++ b/tests/baselines/reference/assignmentTypeNarrowing.types @@ -165,8 +165,8 @@ type AOrArrA = T | T[]; > : ^^^^^^^^^^ const arr: AOrArrA<{x?: "ok"}> = [{ x: "ok" }]; // weak type ->arr : AOrArrA<{ x?: "ok"; }> -> : ^^^^^^^^^^^^^^ ^^^^ +>arr : AOrArrA<{ x?: "ok" | undefined; }> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : "ok" | undefined > : ^^^^^^^^^^^^^^^^ >[{ x: "ok" }] : { x: "ok"; }[] @@ -181,12 +181,12 @@ const arr: AOrArrA<{x?: "ok"}> = [{ x: "ok" }]; // weak type arr.push({ x: "ok" }); >arr.push({ x: "ok" }) : number > : ^^^^^^ ->arr.push : (...items: { x?: "ok"; }[]) => number -> : ^^^^ ^^^^^^^^ ^^^^^^^^^^ ->arr : { x?: "ok"; }[] -> : ^^^^^^ ^^^^^ ->push : (...items: { x?: "ok"; }[]) => number -> : ^^^^ ^^^^^^^^ ^^^^^^^^^^ +>arr.push : (...items: { x?: "ok" | undefined; }[]) => number +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>arr : { x?: "ok" | undefined; }[] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>push : (...items: { x?: "ok" | undefined; }[]) => number +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: "ok" } : { x: "ok"; } > : ^^^^^^^^^^^^ >x : "ok" diff --git a/tests/baselines/reference/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types b/tests/baselines/reference/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types index d4a3b7edd8085..6e5dacfdee762 100644 --- a/tests/baselines/reference/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types +++ b/tests/baselines/reference/avoidNarrowingUsingConstVariableFromBindingElementWithLiteralInitializer.types @@ -8,8 +8,8 @@ declare const foo: ["a", string, number] | ["b", string, boolean]; export function test(arg: { index?: number }) { >test : (arg: { index?: number; }) => void > : ^ ^^ ^^^^^^^^^ ->arg : { index?: number; } -> : ^^^^^^^^^^ ^^^ +>arg : { index?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >index : number | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -18,8 +18,8 @@ export function test(arg: { index?: number }) { > : ^^^^^^ >0 : 0 > : ^ ->arg : { index?: number; } -> : ^^^^^^^^^^ ^^^ +>arg : { index?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ if (foo[index] === "a") { >foo[index] === "a" : boolean diff --git a/tests/baselines/reference/checkJsxChildrenProperty12.types b/tests/baselines/reference/checkJsxChildrenProperty12.types index 08810e4f2782a..d3516ae775175 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty12.types +++ b/tests/baselines/reference/checkJsxChildrenProperty12.types @@ -48,12 +48,12 @@ class Button extends React.Component { > : ^^^^^^^^^^^ >InnerButton : typeof InnerButton > : ^^^^^^^^^^^^^^^^^^ ->this.props : ButtonProp & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.props : ButtonProp & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : ButtonProp & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : ButtonProp & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } else { return ( @@ -63,12 +63,12 @@ class Button extends React.Component { > : ^^^^^^^^^^^ >InnerButton : typeof InnerButton > : ^^^^^^^^^^^^^^^^^^ ->this.props : ButtonProp & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.props : ButtonProp & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : ButtonProp & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : ButtonProp & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Hello World
>
Hello World
: JSX.Element diff --git a/tests/baselines/reference/checkJsxChildrenProperty13.types b/tests/baselines/reference/checkJsxChildrenProperty13.types index 01a48cd8bb23a..4a13a92ef5db4 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty13.types +++ b/tests/baselines/reference/checkJsxChildrenProperty13.types @@ -43,12 +43,12 @@ class Button extends React.Component { > : ^^^^^^^^^^^ >InnerButton : typeof InnerButton > : ^^^^^^^^^^^^^^^^^^ ->this.props : ButtonProp & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.props : ButtonProp & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : ButtonProp & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : ButtonProp & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >children : string > : ^^^^^^ diff --git a/tests/baselines/reference/checkJsxChildrenProperty3.types b/tests/baselines/reference/checkJsxChildrenProperty3.types index 8ed6c5331d92d..c0813e4aa5b95 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty3.types +++ b/tests/baselines/reference/checkJsxChildrenProperty3.types @@ -51,12 +51,12 @@ class FetchUser extends React.Component { > : ^^^^^^^^^^^ >this.props.children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->this.props : IFetchUserProps & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.props : IFetchUserProps & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : IFetchUserProps & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : IFetchUserProps & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.state.result : any diff --git a/tests/baselines/reference/checkJsxChildrenProperty4.types b/tests/baselines/reference/checkJsxChildrenProperty4.types index d12b1ae5788a1..d09e5a10babda 100644 --- a/tests/baselines/reference/checkJsxChildrenProperty4.types +++ b/tests/baselines/reference/checkJsxChildrenProperty4.types @@ -52,12 +52,12 @@ class FetchUser extends React.Component { > : ^^^^^^^^^^^ >this.props.children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->this.props : IFetchUserProps & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.props : IFetchUserProps & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : IFetchUserProps & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : IFetchUserProps & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >children : ((user: IUser) => JSX.Element) & (React.ReactNode | undefined) > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this.state.result : any diff --git a/tests/baselines/reference/checkJsxIntersectionElementPropsType.types b/tests/baselines/reference/checkJsxIntersectionElementPropsType.types index 0a9c2b80045b1..cec2c00ed2c59 100644 --- a/tests/baselines/reference/checkJsxIntersectionElementPropsType.types +++ b/tests/baselines/reference/checkJsxIntersectionElementPropsType.types @@ -23,8 +23,8 @@ declare class Component

{ class C extends Component<{ x?: boolean; } & T> {} >C : C > : ^^^^ ->Component : Component<{ x?: boolean; } & T> -> : ^^^^^^^^^^^^^^^^ ^^^^^^^^ +>Component : Component<{ x?: boolean | undefined; } & T> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/classIsSubtypeOfBaseType.types b/tests/baselines/reference/classIsSubtypeOfBaseType.types index b3d9ce730761e..e50ab25334978 100644 --- a/tests/baselines/reference/classIsSubtypeOfBaseType.types +++ b/tests/baselines/reference/classIsSubtypeOfBaseType.types @@ -39,8 +39,8 @@ class Derived2 extends Base<{ bar: string; }> { > : ^^^^^^ foo: { ->foo : { bar?: string; } -> : ^^^^^^^^ ^^^ +>foo : { bar?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ bar?: string; // error >bar : string | undefined diff --git a/tests/baselines/reference/commonTypeIntersection.types b/tests/baselines/reference/commonTypeIntersection.types index 8c567a9cce265..4cccf63533fea 100644 --- a/tests/baselines/reference/commonTypeIntersection.types +++ b/tests/baselines/reference/commonTypeIntersection.types @@ -2,34 +2,34 @@ === commonTypeIntersection.ts === declare let x1: { __typename?: 'TypeTwo' } & { a: boolean }; ->x1 : { __typename?: "TypeTwo"; } & { a: boolean; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ +>x1 : { __typename?: "TypeTwo" | undefined; } & { a: boolean; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >__typename : "TypeTwo" | undefined > : ^^^^^^^^^^^^^^^^^^^^^ >a : boolean > : ^^^^^^^ let y1: { __typename?: 'TypeOne' } & { a: boolean} = x1; // should error here ->y1 : { __typename?: "TypeOne"; } & { a: boolean; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ +>y1 : { __typename?: "TypeOne" | undefined; } & { a: boolean; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >__typename : "TypeOne" | undefined > : ^^^^^^^^^^^^^^^^^^^^^ >a : boolean > : ^^^^^^^ ->x1 : { __typename?: "TypeTwo"; } & { a: boolean; } -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^ +>x1 : { __typename?: "TypeTwo" | undefined; } & { a: boolean; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ declare let x2: { __typename?: 'TypeTwo' } & string; ->x2 : { __typename?: "TypeTwo"; } & string -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +>x2 : { __typename?: "TypeTwo" | undefined; } & string +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__typename : "TypeTwo" | undefined > : ^^^^^^^^^^^^^^^^^^^^^ let y2: { __typename?: 'TypeOne' } & string = x2; // should error here ->y2 : { __typename?: "TypeOne"; } & string -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +>y2 : { __typename?: "TypeOne" | undefined; } & string +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >__typename : "TypeOne" | undefined > : ^^^^^^^^^^^^^^^^^^^^^ ->x2 : { __typename?: "TypeTwo"; } & string -> : ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +>x2 : { __typename?: "TypeTwo" | undefined; } & string +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/contextualSignatureConditionalTypeInstantiationUsingDefault.types b/tests/baselines/reference/contextualSignatureConditionalTypeInstantiationUsingDefault.types index 14f47ec04722f..184a0080175e5 100644 --- a/tests/baselines/reference/contextualSignatureConditionalTypeInstantiationUsingDefault.types +++ b/tests/baselines/reference/contextualSignatureConditionalTypeInstantiationUsingDefault.types @@ -33,8 +33,8 @@ declare function createMachine< TTypesMeta extends TypegenEnabled | TypegenDisabled = TypegenDisabled >( config: { ->config : { types?: TTypesMeta; } -> : ^^^^^^^^^^ ^^^ +>config : { types?: TTypesMeta | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ types?: TTypesMeta; >types : TTypesMeta | undefined diff --git a/tests/baselines/reference/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types b/tests/baselines/reference/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types index d29a47924fbe0..71ad81f325adb 100644 --- a/tests/baselines/reference/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types +++ b/tests/baselines/reference/contextualTypeBasedOnIntersectionWithAnyInTheMix2.types @@ -6,8 +6,8 @@ type IntrinsicElements = { > : ^^^^^^^^^^^^^^^^^ a: { ->a : { href?: string; } -> : ^^^^^^^^^ ^^^ +>a : { href?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ href?: string; >href : string | undefined @@ -15,8 +15,8 @@ type IntrinsicElements = { }; div: { ->div : { dir?: string; } -> : ^^^^^^^^ ^^^ +>div : { dir?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ dir?: string; >dir : string | undefined @@ -61,28 +61,28 @@ MyMDXComponent({ > : ^^^^ >MyMDXComponent : (props: MDXProps) => null > : ^ ^^ ^^^^^ ->{ components: { a(props) { return null; }, div(props) { return null; }, },} : { components: { a(props: { href?: string; }): null; div(props: { dir?: string; }): null; }; } -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +>{ components: { a(props) { return null; }, div(props) { return null; }, },} : { components: { a(props: { href?: string | undefined; }): null; div(props: { dir?: string | undefined; }): null; }; } +> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ components: { ->components : { a(props: { href?: string; }): null; div(props: { dir?: string; }): null; } -> : ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ ->{ a(props) { return null; }, div(props) { return null; }, } : { a(props: { href?: string; }): null; div(props: { dir?: string; }): null; } -> : ^^^^ ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^^^^^^^^ ^^^^^^^^^^^^^ +>components : { a(props: { href?: string | undefined; }): null; div(props: { dir?: string | undefined; }): null; } +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ a(props) { return null; }, div(props) { return null; }, } : { a(props: { href?: string | undefined; }): null; div(props: { dir?: string | undefined; }): null; } +> : ^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ a(props) { ->a : (props: { href?: string; }) => null -> : ^ ^^^^^^^^^^^ ^^^^^^^^^^^^ ->props : { href?: string; } -> : ^^^^^^^^^ ^^^ +>a : (props: { href?: string | undefined; }) => null +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : { href?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return null; }, div(props) { ->div : (props: { dir?: string; }) => null -> : ^ ^^^^^^^^^^ ^^^^^^^^^^^^ ->props : { dir?: string; } -> : ^^^^^^^^ ^^^ +>div : (props: { dir?: string | undefined; }) => null +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : { dir?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return null; }, diff --git a/tests/baselines/reference/contextualTypeFromJSDoc.types b/tests/baselines/reference/contextualTypeFromJSDoc.types index e96f075e12e25..e168cfa96b9de 100644 --- a/tests/baselines/reference/contextualTypeFromJSDoc.types +++ b/tests/baselines/reference/contextualTypeFromJSDoc.types @@ -3,8 +3,8 @@ === index.js === /** @type {Array<[string, {x?:number, y?:number}]>} */ const arr = [ ->arr : [string, { x?: number; y?: number; }][] -> : ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ +>arr : [string, { x?: number | undefined; y?: number | undefined; }][] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >[ ['a', { x: 1 }], ['b', { y: 2 }]] : ([string, { x: number; }] | [string, { y: number; }])[] > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -76,14 +76,14 @@ class C { /** @param {Array<[string, {x?:number, y?:number}]>} value */ set x(value) { } ->x : [string, { x?: number; y?: number; }][] -> : ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ ->value : [string, { x?: number; y?: number; }][] -> : ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ +>x : [string, { x?: number | undefined; y?: number | undefined; }][] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>value : [string, { x?: number | undefined; y?: number | undefined; }][] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ get x() { ->x : [string, { x?: number; y?: number; }][] -> : ^^^^^^^^^^^^^^^ ^^^^^^ ^^^^^^ +>x : [string, { x?: number | undefined; y?: number | undefined; }][] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return [ >[ ['a', { x: 1 }], ['b', { y: 2 }] ] : ([string, { x: number; }] | [string, { y: number; }])[] diff --git a/tests/baselines/reference/contextuallyTypedJsxAttribute.types b/tests/baselines/reference/contextuallyTypedJsxAttribute.types index f72f0d069ce5a..5a7016e83c029 100644 --- a/tests/baselines/reference/contextuallyTypedJsxAttribute.types +++ b/tests/baselines/reference/contextuallyTypedJsxAttribute.types @@ -3,16 +3,16 @@ === index.tsx === interface Elements { foo: { callback?: (value: number) => void }; ->foo : { callback?: (value: number) => void; } -> : ^^^^^^^^^^^^^ ^^^ +>foo : { callback?: ((value: number) => void) | undefined; } +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >callback : ((value: number) => void) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : number > : ^^^^^^ bar: { callback?: (value: string) => void }; ->bar : { callback?: (value: string) => void; } -> : ^^^^^^^^^^^^^ ^^^ +>bar : { callback?: ((value: string) => void) | undefined; } +> : ^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >callback : ((value: string) => void) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >value : string diff --git a/tests/baselines/reference/contextuallyTypedJsxAttribute2.types b/tests/baselines/reference/contextuallyTypedJsxAttribute2.types index 119033445a3af..d1cce3bd1752f 100644 --- a/tests/baselines/reference/contextuallyTypedJsxAttribute2.types +++ b/tests/baselines/reference/contextuallyTypedJsxAttribute2.types @@ -54,8 +54,8 @@ function UnwrappedLink2( > : ^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^ ^^^^^^^^^^^^^^^^ props: Omit, "as"> & { ->props : Omit, "as"> & { as?: T; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>props : Omit, "as"> & { as?: T | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ as?: T; >as : T | undefined diff --git a/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types b/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types index 778e058377b75..7398f7109ea00 100644 --- a/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/contextuallyTypedOptionalProperty(exactoptionalpropertytypes=false).types @@ -14,8 +14,8 @@ declare function match(cb: (value: T) => boolean): T; declare function foo(pos: { x?: number; y?: number }): boolean; >foo : (pos: { x?: number; y?: number; }) => boolean > : ^ ^^ ^^^^^ ->pos : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>pos : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ >y : number | undefined diff --git a/tests/baselines/reference/controlFlowAliasing.types b/tests/baselines/reference/controlFlowAliasing.types index d24919344d519..87dd0eae76370 100644 --- a/tests/baselines/reference/controlFlowAliasing.types +++ b/tests/baselines/reference/controlFlowAliasing.types @@ -1284,8 +1284,8 @@ class C11 { function f40(obj: { kind: 'foo', foo?: string } | { kind: 'bar', bar?: number }) { >f40 : (obj: { kind: "foo"; foo?: string; } | { kind: "bar"; bar?: number; }) => void > : ^ ^^ ^^^^^^^^^ ->obj : { kind: "foo"; foo?: string; } | { kind: "bar"; bar?: number; } -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ +>obj : { kind: "foo"; foo?: string | undefined; } | { kind: "bar"; bar?: number | undefined; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >kind : "foo" > : ^^^^^ >foo : string | undefined @@ -1298,8 +1298,8 @@ function f40(obj: { kind: 'foo', foo?: string } | { kind: 'bar', bar?: number }) const { kind } = obj; >kind : "foo" | "bar" > : ^^^^^^^^^^^^^ ->obj : { kind: "foo"; foo?: string; } | { kind: "bar"; bar?: number; } -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^ ^^^ +>obj : { kind: "foo"; foo?: string | undefined; } | { kind: "bar"; bar?: number | undefined; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const isFoo = kind == 'foo'; >isFoo : boolean @@ -1318,8 +1318,8 @@ function f40(obj: { kind: 'foo', foo?: string } | { kind: 'bar', bar?: number }) > : ^^^^^^^ >obj.foo : string | undefined > : ^^^^^^^^^^^^^^^^^^ ->obj : { kind: "foo"; foo?: string; } -> : ^^^^^^^^ ^^^^^^^^ ^^^ +>obj : { kind: "foo"; foo?: string | undefined; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -1328,8 +1328,8 @@ function f40(obj: { kind: 'foo', foo?: string } | { kind: 'bar', bar?: number }) > : ^^^^^^ >obj.foo : string > : ^^^^^^ ->obj : { kind: "foo"; foo?: string; } -> : ^^^^^^^^ ^^^^^^^^ ^^^ +>obj : { kind: "foo"; foo?: string | undefined; } +> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : string > : ^^^^^^ } diff --git a/tests/baselines/reference/controlFlowDeleteOperator.types b/tests/baselines/reference/controlFlowDeleteOperator.types index 6991d009ae532..0d103001c5a84 100644 --- a/tests/baselines/reference/controlFlowDeleteOperator.types +++ b/tests/baselines/reference/controlFlowDeleteOperator.types @@ -6,8 +6,8 @@ function f() { > : ^^^^^^^^^^ let x: { a?: number | string, b: number | string } = { b: 1 }; ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >a : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : string | number @@ -22,16 +22,16 @@ function f() { x.a; >x.a : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >a : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ x.b; >x.b : string | number > : ^^^^^^^^^^^^^^^ ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >b : string | number > : ^^^^^^^^^^^^^^^ @@ -40,8 +40,8 @@ function f() { > : ^ >x.a : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >a : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : 1 @@ -52,8 +52,8 @@ function f() { > : ^ >x.b : string | number > : ^^^^^^^^^^^^^^^ ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >b : string | number > : ^^^^^^^^^^^^^^^ >1 : 1 @@ -62,16 +62,16 @@ function f() { x.a; >x.a : number > : ^^^^^^ ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >a : number > : ^^^^^^ x.b; >x.b : number > : ^^^^^^ ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >b : number > : ^^^^^^ @@ -80,8 +80,8 @@ function f() { > : ^^^^^^^ >x.a : number > : ^^^^^^ ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >a : number > : ^^^^^^ @@ -90,38 +90,38 @@ function f() { > : ^^^^^^^ >x.b : number > : ^^^^^^ ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >b : number > : ^^^^^^ x.a; >x.a : undefined > : ^^^^^^^^^ ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >a : undefined > : ^^^^^^^^^ x.b; >x.b : string | number > : ^^^^^^^^^^^^^^^ ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >b : string | number > : ^^^^^^^^^^^^^^^ x; ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ delete x; // No effect >delete x : boolean > : ^^^^^^^ ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ x; ->x : { a?: number | string; b: number | string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | number | undefined; b: number | string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ } diff --git a/tests/baselines/reference/controlFlowGenericTypes.types b/tests/baselines/reference/controlFlowGenericTypes.types index 34aaf80709138..cb65f974a4b22 100644 --- a/tests/baselines/reference/controlFlowGenericTypes.types +++ b/tests/baselines/reference/controlFlowGenericTypes.types @@ -884,19 +884,19 @@ type Column = (keyof T extends never ? { id?: number | string } : { id: T }) > : ^^^^^^^^^^^^^^^^^^ function getColumnProperty(column: Column, key: keyof Column) { ->getColumnProperty : (column: Column, key: keyof Column) => Column["title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; })] -> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +>getColumnProperty : (column: Column, key: keyof Column) => Column["title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })] +> : ^ ^^ ^^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >column : Column > : ^^^^^^^^^ ->key : "title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; }) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +>key : "title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; }) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return column[key]; ->column[key] : Column["title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; })] -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +>column[key] : Column["title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; })] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >column : Column > : ^^^^^^^^^ ->key : "title" | keyof (keyof T extends never ? { id?: number | string; } : { id: T; }) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ +>key : "title" | keyof (keyof T extends never ? { id?: string | number | undefined; } : { id: T; }) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/controlFlowOptionalChain.types b/tests/baselines/reference/controlFlowOptionalChain.types index 1be51c8e96277..0b6ee630a7a1a 100644 --- a/tests/baselines/reference/controlFlowOptionalChain.types +++ b/tests/baselines/reference/controlFlowOptionalChain.types @@ -387,8 +387,8 @@ o3.x; > : ^^^^^ declare const o4: { x?: { y: boolean } }; ->o4 : { x?: { y: boolean; }; } -> : ^^^^^^ ^^^ +>o4 : { x?: { y: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >y : boolean @@ -399,8 +399,8 @@ if (o4.x?.y) { > : ^^^^^^^^^^^^^^^^^^^ >o4.x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { x?: { y: boolean; }; } -> : ^^^^^^ ^^^ +>o4 : { x?: { y: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >y : boolean | undefined @@ -409,8 +409,8 @@ if (o4.x?.y) { o4.x; // { y: boolean } >o4.x : { y: boolean; } > : ^^^^^ ^^^ ->o4 : { x?: { y: boolean; }; } -> : ^^^^^^ ^^^ +>o4 : { x?: { y: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: boolean; } > : ^^^^^ ^^^ @@ -419,8 +419,8 @@ if (o4.x?.y) { > : ^^^^ >o4.x : { y: boolean; } > : ^^^^^ ^^^ ->o4 : { x?: { y: boolean; }; } -> : ^^^^^^ ^^^ +>o4 : { x?: { y: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: boolean; } > : ^^^^^ ^^^ >y : true @@ -431,8 +431,8 @@ if (o4.x?.y) { > : ^^^^ >o4.x : { y: boolean; } > : ^^^^^ ^^^ ->o4 : { x?: { y: boolean; }; } -> : ^^^^^^ ^^^ +>o4 : { x?: { y: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: boolean; } > : ^^^^^ ^^^ >y : true @@ -442,8 +442,8 @@ else { o4.x; >o4.x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { x?: { y: boolean; }; } -> : ^^^^^^ ^^^ +>o4 : { x?: { y: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ @@ -452,8 +452,8 @@ else { > : ^^^^^^^^^^^^^^^^^^^ >o4.x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { x?: { y: boolean; }; } -> : ^^^^^^ ^^^ +>o4 : { x?: { y: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >y : boolean | undefined @@ -464,8 +464,8 @@ else { > : ^^^^^^^ >o4.x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { x?: { y: boolean; }; } -> : ^^^^^^ ^^^ +>o4 : { x?: { y: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >y : boolean @@ -474,8 +474,8 @@ else { o4.x; >o4.x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { x?: { y: boolean; }; } -> : ^^^^^^ ^^^ +>o4 : { x?: { y: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ @@ -484,8 +484,8 @@ o4.x?.y; > : ^^^^^^^^^^^^^^^^^^^ >o4.x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { x?: { y: boolean; }; } -> : ^^^^^^ ^^^ +>o4 : { x?: { y: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >y : boolean | undefined @@ -496,20 +496,20 @@ o4.x.y; > : ^^^^^^^ >o4.x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { x?: { y: boolean; }; } -> : ^^^^^^ ^^^ +>o4 : { x?: { y: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >y : boolean > : ^^^^^^^ declare const o5: { x?: { y: { z?: { w: boolean } } } }; ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >w : boolean @@ -520,16 +520,16 @@ if (o5.x?.y.z?.w) { > : ^^^^^^^^^^^^^^^^^^^ >o5.x?.y.z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.x?.y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >w : boolean | undefined @@ -538,36 +538,36 @@ if (o5.x?.y.z?.w) { o5.x; >o5.x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ o5.x.y; ->o5.x.y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>o5.x.y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ o5.x.y.z; >o5.x.y.z : { w: boolean; } > : ^^^^^ ^^^ ->o5.x.y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>o5.x.y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } > : ^^^^^ ^^^ @@ -576,16 +576,16 @@ if (o5.x?.y.z?.w) { > : ^^^^ >o5.x.y.z : { w: boolean; } > : ^^^^^ ^^^ ->o5.x.y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>o5.x.y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } > : ^^^^^ ^^^ >w : true @@ -596,16 +596,16 @@ if (o5.x?.y.z?.w) { > : ^^^^ >o5.x.y.z : { w: boolean; } > : ^^^^^ ^^^ ->o5.x.y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>o5.x.y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } > : ^^^^^ ^^^ >w : true @@ -616,16 +616,16 @@ if (o5.x?.y.z?.w) { > : ^^^^ >o5.x?.y.z : { w: boolean; } > : ^^^^^ ^^^ ->o5.x?.y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>o5.x?.y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } > : ^^^^^ ^^^ >w : true @@ -636,16 +636,16 @@ if (o5.x?.y.z?.w) { > : ^^^^ >o5.x?.y.z : { w: boolean; } > : ^^^^^ ^^^ ->o5.x?.y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>o5.x?.y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } > : ^^^^^ ^^^ ->y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } > : ^^^^^ ^^^ >w : true @@ -655,36 +655,36 @@ else { o5.x; >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ o5.x?.y; ->o5.x?.y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ o5.x?.y.z; >o5.x?.y.z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.x?.y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ @@ -693,48 +693,48 @@ else { > : ^^^^^^^^^^^^^^^^^^^ >o5.x?.y.z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.x?.y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >w : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ o5.x.y; ->o5.x.y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>o5.x.y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ o5.x.y.z.w; >o5.x.y.z.w : boolean > : ^^^^^^^ >o5.x.y.z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.x.y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>o5.x.y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >w : boolean @@ -743,36 +743,36 @@ else { o5.x; >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ o5.x?.y; ->o5.x?.y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ o5.x?.y.z; >o5.x?.y.z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.x?.y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ @@ -781,48 +781,48 @@ o5.x?.y.z?.w; > : ^^^^^^^^^^^^^^^^^^^ >o5.x?.y.z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.x?.y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.x?.y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>y : { z?: { w: boolean; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >w : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ o5.x.y; ->o5.x.y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>o5.x.y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ o5.x.y.z.w; >o5.x.y.z.w : boolean > : ^^^^^^^ >o5.x.y.z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.x.y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>o5.x.y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >o5.x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5 : { x?: { y: { z?: { w: boolean; }; }; }; } -> : ^^^^^^ ^^^ +>o5 : { x?: { y: { z?: { w: boolean; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >x : { y: { z?: { w: boolean; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->y : { z?: { w: boolean; }; } -> : ^^^^^^ ^^^ +>y : { z?: { w: boolean; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >z : { w: boolean; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >w : boolean diff --git a/tests/baselines/reference/controlFlowOptionalChain3.types b/tests/baselines/reference/controlFlowOptionalChain3.types index bc4f6fc04b27c..a3ad959a3b5b8 100644 --- a/tests/baselines/reference/controlFlowOptionalChain3.types +++ b/tests/baselines/reference/controlFlowOptionalChain3.types @@ -135,8 +135,8 @@ function Test3({ foo }: { foo: Foo | undefined }) { function test4(options?: { a?: boolean; b?: boolean }) { >test4 : (options?: { a?: boolean; b?: boolean; }) => void > : ^ ^^^ ^^^^^^^^^ ->options : { a?: boolean; b?: boolean; } | undefined -> : ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ +>options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ >b : boolean | undefined @@ -149,22 +149,22 @@ function test4(options?: { a?: boolean; b?: boolean }) { > : ^^^^^^^ >options?.a : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ ->options : { a?: boolean; b?: boolean; } | undefined -> : ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ +>options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ >false : false > : ^^^^^ >options.b : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ ->options : { a?: boolean; b?: boolean; } | undefined -> : ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ +>options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ options; ->options : { a?: boolean; b?: boolean; } | undefined -> : ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ +>options : { a?: boolean | undefined; b?: boolean | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/declarationEmitComputedPropertyName1.types b/tests/baselines/reference/declarationEmitComputedPropertyName1.types index e4c9a58944831..002f1dfb9a1fb 100644 --- a/tests/baselines/reference/declarationEmitComputedPropertyName1.types +++ b/tests/baselines/reference/declarationEmitComputedPropertyName1.types @@ -16,8 +16,8 @@ export const c = create<{ > : ^ ^^^^^^^^^ ^^^^^^^ data: { ->data : { a_b_c: string; sss: string; s_d: string; queryData?: string; "foo bar": string; } -> : ^^^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^ ^^^ +>data : { a_b_c: string; sss: string; s_d: string; queryData?: string | undefined; "foo bar": string; } +> : ^^^^^^^^^ ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ["a_b_c"]: string; >["a_b_c"] : string diff --git a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum1.js b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum1.js index 162a3c3064c32..a1ed0dca99c55 100644 --- a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum1.js +++ b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum1.js @@ -30,5 +30,5 @@ export type Type = { export declare const foo: { x?: { a: 0; - }; + } | undefined; }; diff --git a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum1.types b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum1.types index 9e356be01688d..9f522279d0827 100644 --- a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum1.types +++ b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum1.types @@ -38,10 +38,10 @@ import { type Type } from "./type"; > : ^^^ export const foo = { ...({} as Type) }; ->foo : { x?: { a: 0; }; } -> : ^^^^^^ ^^^ ->{ ...({} as Type) } : { x?: { a: 0; }; } -> : ^^^^^^ ^^^ +>foo : { x?: { a: 0; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +>{ ...({} as Type) } : { x?: { a: 0; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >({} as Type) : Type > : ^^^^ >{} as Type : Type diff --git a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum2.js b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum2.js index c77d5998d8705..bd813d820f799 100644 --- a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum2.js +++ b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum2.js @@ -18,6 +18,6 @@ export type Type = { //// [index.d.ts] export declare const foo: { x?: { - [Enum.A]: 0; - }; + [x: number]: 0; + } | undefined; }; diff --git a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum2.types b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum2.types index d1e82f6148633..7ff7c31fb2e62 100644 --- a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum2.types +++ b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum2.types @@ -21,10 +21,10 @@ import { type Type } from "./type"; > : ^^^ export const foo = { ...({} as Type) }; ->foo : { x?: { [Enum.A]: 0; }; } -> : ^^^^^^ ^^^ ->{ ...({} as Type) } : { x?: { [Enum.A]: 0; }; } -> : ^^^^^^ ^^^ +>foo : { x?: { [x: number]: 0; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ ...({} as Type) } : { x?: { [x: number]: 0; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >({} as Type) : Type > : ^^^^ >{} as Type : Type diff --git a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum3.js b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum3.js index 1e3f52a3eafeb..9bddf3dab57a8 100644 --- a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum3.js +++ b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum3.js @@ -29,5 +29,5 @@ export type Type = { }; //// [index.d.ts] export declare const foo: { - x?: {}; + x?: {} | undefined; }; diff --git a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum3.types b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum3.types index 9dcab9277a3e9..ef30339529989 100644 --- a/tests/baselines/reference/declarationEmitComputedPropertyNameEnum3.types +++ b/tests/baselines/reference/declarationEmitComputedPropertyNameEnum3.types @@ -42,10 +42,10 @@ import { type Type } from "./type"; > : ^^^ export const foo = { ...({} as Type) }; ->foo : { x?: {}; } -> : ^^^^^^ ^^^ ->{ ...({} as Type) } : { x?: {}; } -> : ^^^^^^ ^^^ +>foo : { x?: {} | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^ +>{ ...({} as Type) } : { x?: {} | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^ >({} as Type) : Type > : ^^^^ >{} as Type : Type diff --git a/tests/baselines/reference/declarationEmitComputedPropertyNameSymbol1.types b/tests/baselines/reference/declarationEmitComputedPropertyNameSymbol1.types index 2e8c9289d3ea2..443ae53990f1e 100644 --- a/tests/baselines/reference/declarationEmitComputedPropertyNameSymbol1.types +++ b/tests/baselines/reference/declarationEmitComputedPropertyNameSymbol1.types @@ -33,10 +33,10 @@ import { type Type } from "./type"; > : ^^^ export const foo = { ...({} as Type) }; ->foo : { x?: { [Foo.sym]: 0; }; } -> : ^^^^^^ ^^^ ->{ ...({} as Type) } : { x?: { [Foo.sym]: 0; }; } -> : ^^^^^^ ^^^ +>foo : { x?: { [Foo.sym]: 0; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +>{ ...({} as Type) } : { x?: { [Foo.sym]: 0; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >({} as Type) : Type > : ^^^^ >{} as Type : Type diff --git a/tests/baselines/reference/declarationEmitComputedPropertyNameSymbol2.types b/tests/baselines/reference/declarationEmitComputedPropertyNameSymbol2.types index 0b2bf47965560..c643757262cbb 100644 --- a/tests/baselines/reference/declarationEmitComputedPropertyNameSymbol2.types +++ b/tests/baselines/reference/declarationEmitComputedPropertyNameSymbol2.types @@ -33,10 +33,10 @@ import { type Type } from "./type"; > : ^^^ export const foo = { ...({} as Type) }; ->foo : { x?: { [Foo.sym]: 0; }; } -> : ^^^^^^ ^^^ ->{ ...({} as Type) } : { x?: { [Foo.sym]: 0; }; } -> : ^^^^^^ ^^^ +>foo : { x?: { [Foo.sym]: 0; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ +>{ ...({} as Type) } : { x?: { [Foo.sym]: 0; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >({} as Type) : Type > : ^^^^ >{} as Type : Type diff --git a/tests/baselines/reference/declarationEmitOptionalMethod.types b/tests/baselines/reference/declarationEmitOptionalMethod.types index ecbb88f037a5c..40644e61239ca 100644 --- a/tests/baselines/reference/declarationEmitOptionalMethod.types +++ b/tests/baselines/reference/declarationEmitOptionalMethod.types @@ -6,8 +6,8 @@ export const Foo = (opts: { > : ^ ^^ ^^^^^ >(opts: { a?(): void, b?: () => void,}): { c?(): void, d?: () => void,} => ({ }) : (opts: { a?(): void; b?: () => void; }) => { c?(): void; d?: () => void; } > : ^ ^^ ^^^^^ ->opts : { a?(): void; b?: () => void; } -> : ^^^^^^^^ ^^^^^^ ^^^ +>opts : { a?(): void; b?: (() => void) | undefined; } +> : ^^^^^^^^ ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ a?(): void, >a : (() => void) | undefined diff --git a/tests/baselines/reference/deepExcessPropertyCheckingWhenTargetIsIntersection.types b/tests/baselines/reference/deepExcessPropertyCheckingWhenTargetIsIntersection.types index d48466b1835b3..5ccf4ffe718f1 100644 --- a/tests/baselines/reference/deepExcessPropertyCheckingWhenTargetIsIntersection.types +++ b/tests/baselines/reference/deepExcessPropertyCheckingWhenTargetIsIntersection.types @@ -3,8 +3,8 @@ === deepExcessPropertyCheckingWhenTargetIsIntersection.ts === interface StatelessComponent

{ (props: P & { children?: number }, context?: any): null; ->props : P & { children?: number; } -> : ^^^^^^^^^^^^^^^^^ ^^^ +>props : P & { children?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >children : number | undefined > : ^^^^^^^^^^^^^^^^^^ >context : any @@ -14,10 +14,10 @@ interface StatelessComponent

{ const TestComponent: StatelessComponent = (props) => { >TestComponent : StatelessComponent > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->(props) => { return null;} : (props: TestProps & { children?: number; }) => null -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ->props : TestProps & { children?: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>(props) => { return null;} : (props: TestProps & { children?: number | undefined; }) => null +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : TestProps & { children?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return null; } @@ -71,10 +71,10 @@ const TestComponent2: StatelessComponent = (p > : ^^^^^ ^^^ >x : number > : ^^^^^^ ->(props) => { return null;} : (props: (TestProps | { props2: { x: number; }; }) & { children?: number; }) => null -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ->props : (TestProps | { props2: { x: number; }; }) & { children?: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^ ^^^ +>(props) => { return null;} : (props: (TestProps | { props2: { x: number; }; }) & { children?: number | undefined; }) => null +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : (TestProps | { props2: { x: number; }; }) & { children?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return null; } diff --git a/tests/baselines/reference/deleteChain.types b/tests/baselines/reference/deleteChain.types index 55f7028a4b8a6..4b801187a9801 100644 --- a/tests/baselines/reference/deleteChain.types +++ b/tests/baselines/reference/deleteChain.types @@ -106,12 +106,12 @@ delete (o3.b?.c); > : ^^^^^^^^^^^^^^^^^^ declare const o4: { b?: { c: { d?: { e: string } } } }; ->o4 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o4 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } -> : ^^^^^^ ^^^ +>c : { d?: { e: string; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string @@ -124,16 +124,16 @@ delete o4.b?.c.d?.e; > : ^^^^^^^^^^^^^^^^^^ >o4.b?.c.d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4.b?.c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o4.b?.c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o4.b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o4 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string | undefined @@ -148,16 +148,16 @@ delete (o4.b?.c.d)?.e; > : ^^^^^ ^^^^^^^^^^^^^^^ >o4.b?.c.d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4.b?.c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o4.b?.c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o4.b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o4 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string | undefined @@ -172,16 +172,16 @@ delete (o4.b?.c.d?.e); > : ^^^^^^^^^^^^^^^^^^ >o4.b?.c.d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4.b?.c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o4.b?.c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o4.b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o4 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string | undefined @@ -192,8 +192,8 @@ declare const o5: { b?(): { c: { d?: { e: string } } } }; > : ^^^^^^^^ ^^^ >b : (() => { c: { d?: { e: string; }; }; }) | undefined > : ^^^^^^^ ^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } -> : ^^^^^^ ^^^ +>c : { d?: { e: string; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string @@ -206,8 +206,8 @@ delete o5.b?.().c.d?.e; > : ^^^^^^^^^^^^^^^^^^ >o5.b?.().c.d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.b?.().c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.b?.().c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.b?.() : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined @@ -216,8 +216,8 @@ delete o5.b?.().c.d?.e; > : ^^^^^^^^ ^^^ >b : (() => { c: { d?: { e: string; }; }; }) | undefined > : ^^^^^^^ ^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string | undefined @@ -232,8 +232,8 @@ delete (o5.b?.().c.d?.e); > : ^^^^^^^^^^^^^^^^^^ >o5.b?.().c.d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.b?.().c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.b?.().c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.b?.() : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined @@ -242,20 +242,20 @@ delete (o5.b?.().c.d?.e); > : ^^^^^^^^ ^^^ >b : (() => { c: { d?: { e: string; }; }; }) | undefined > : ^^^^^^^ ^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string | undefined > : ^^^^^^^^^^^^^^^^^^ declare const o6: { b?: { c: { d?: { e: string } } } }; ->o6 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o6 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } -> : ^^^^^^ ^^^ +>c : { d?: { e: string; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string @@ -268,12 +268,12 @@ delete o6.b?.['c'].d?.['e']; > : ^^^^^^^^^^^^^^^^^^ >o6.b?.['c'].d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o6.b?.['c'] : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o6.b?.['c'] : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o6.b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o6 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o6 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >'c' : "c" @@ -292,12 +292,12 @@ delete (o6.b?.['c'].d?.['e']); > : ^^^^^^^^^^^^^^^^^^ >o6.b?.['c'].d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o6.b?.['c'] : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o6.b?.['c'] : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o6.b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o6 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o6 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >'c' : "c" diff --git a/tests/baselines/reference/destructuringAssignmentWithDefault2.types b/tests/baselines/reference/destructuringAssignmentWithDefault2.types index 0a4357ab349cf..390e7894abfe7 100644 --- a/tests/baselines/reference/destructuringAssignmentWithDefault2.types +++ b/tests/baselines/reference/destructuringAssignmentWithDefault2.types @@ -2,8 +2,8 @@ === destructuringAssignmentWithDefault2.ts === const a: { x?: number; y?: number } = { }; ->a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ >y : number | undefined @@ -17,24 +17,24 @@ let x: number; // Should not error out ({ x = 0 } = a); ->({ x = 0 } = a) : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ ->{ x = 0 } = a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>({ x = 0 } = a) : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ x = 0 } = a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x = 0 } : { x?: number; } > : ^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >0 : 0 > : ^ ->a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ({ x: x = 0} = a); ->({ x: x = 0} = a) : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ ->{ x: x = 0} = a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>({ x: x = 0} = a) : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ x: x = 0} = a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: x = 0} : { x?: number; } > : ^^^^^^^^^^^^^^^ >x : number @@ -45,14 +45,14 @@ let x: number; > : ^^^^^^ >0 : 0 > : ^ ->a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ({ y: x = 0} = a); ->({ y: x = 0} = a) : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ ->{ y: x = 0} = a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>({ y: x = 0} = a) : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ y: x = 0} = a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ y: x = 0} : { y?: number; } > : ^^^^^^^^^^^^^^^ >y : number @@ -63,29 +63,29 @@ let x: number; > : ^^^^^^ >0 : 0 > : ^ ->a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ // Should be error ({ x = undefined } = a); ->({ x = undefined } = a) : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ ->{ x = undefined } = a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>({ x = undefined } = a) : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ x = undefined } = a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x = undefined } : { x?: number; } > : ^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >undefined : undefined > : ^^^^^^^^^ ->a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ({ x: x = undefined } = a); ->({ x: x = undefined } = a) : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ ->{ x: x = undefined } = a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>({ x: x = undefined } = a) : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ x: x = undefined } = a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ x: x = undefined } : { x?: undefined; } > : ^^^^^^^^^^^^^^^^^^ >x : undefined @@ -96,14 +96,14 @@ let x: number; > : ^^^^^^ >undefined : undefined > : ^^^^^^^^^ ->a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ({ y: x = undefined } = a); ->({ y: x = undefined } = a) : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ ->{ y: x = undefined } = a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>({ y: x = undefined } = a) : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ y: x = undefined } = a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ y: x = undefined } : { y?: undefined; } > : ^^^^^^^^^^^^^^^^^^ >y : undefined @@ -114,16 +114,16 @@ let x: number; > : ^^^^^^ >undefined : undefined > : ^^^^^^^^^ ->a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { x: z1 } = a; >x : any > : ^^^ >z1 : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { x: z2 = 0 } = a; >x : any @@ -132,8 +132,8 @@ const { x: z2 = 0 } = a; > : ^^^^^^ >0 : 0 > : ^ ->a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const { x: z3 = undefined } = a; >x : any @@ -142,8 +142,8 @@ const { x: z3 = undefined } = a; > : ^^^^^^^^^^^^^^^^^^ >undefined : undefined > : ^^^^^^^^^ ->a : { x?: number; y?: number; } -> : ^^^^^^ ^^^^^^ ^^^ +>a : { x?: number | undefined; y?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare const r: Iterator; diff --git a/tests/baselines/reference/destructuringControlFlow.types b/tests/baselines/reference/destructuringControlFlow.types index 053f79fdf6504..a3aec2f648bc5 100644 --- a/tests/baselines/reference/destructuringControlFlow.types +++ b/tests/baselines/reference/destructuringControlFlow.types @@ -4,24 +4,24 @@ function f1(obj: { a?: string }) { >f1 : (obj: { a?: string; }) => void > : ^ ^^ ^^^^^^^^^ ->obj : { a?: string; } -> : ^^^^^^ ^^^ +>obj : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string | undefined > : ^^^^^^^^^^^^^^^^^^ if (obj.a) { >obj.a : string | undefined > : ^^^^^^^^^^^^^^^^^^ ->obj : { a?: string; } -> : ^^^^^^ ^^^ +>obj : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string | undefined > : ^^^^^^^^^^^^^^^^^^ obj = {}; >obj = {} : {} > : ^^ ->obj : { a?: string; } -> : ^^^^^^ ^^^ +>obj : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ @@ -30,8 +30,8 @@ function f1(obj: { a?: string }) { > : ^^^^^^^^^^^^^^^^^^ >obj["a"] : string | undefined > : ^^^^^^^^^^^^^^^^^^ ->obj : { a?: string; } -> : ^^^^^^ ^^^ +>obj : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"a" : "a" > : ^^^ @@ -40,8 +40,8 @@ function f1(obj: { a?: string }) { > : ^^^^^^^^^^^^^^^^^^ >obj.a : string | undefined > : ^^^^^^^^^^^^^^^^^^ ->obj : { a?: string; } -> : ^^^^^^ ^^^ +>obj : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string | undefined > : ^^^^^^^^^^^^^^^^^^ } @@ -158,8 +158,8 @@ function f2(obj: [number, string] | null[]) { function f3(obj: { a?: number, b?: string }) { >f3 : (obj: { a?: number; b?: string; }) => void > : ^ ^^ ^^^^^^^^^ ->obj : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>obj : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number | undefined > : ^^^^^^^^^^^^^^^^^^ >b : string | undefined @@ -170,14 +170,14 @@ function f3(obj: { a?: number, b?: string }) { > : ^^^^^^^^^^^^^^^^^^^^^^ >obj.a : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->obj : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>obj : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number | undefined > : ^^^^^^^^^^^^^^^^^^ >obj.b : string | undefined > : ^^^^^^^^^^^^^^^^^^ ->obj : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>obj : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -186,22 +186,22 @@ function f3(obj: { a?: number, b?: string }) { > : ^^^^^^ >b : string > : ^^^^^^ ->obj : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>obj : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ({ a, b } = obj); ->({ a, b } = obj) : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ ->{ a, b } = obj : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>({ a, b } = obj) : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ a, b } = obj : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ a, b } : { a: number; b: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >b : string > : ^^^^^^ ->obj : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>obj : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } diff --git a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types index 6cb2c72ef29a7..6b599f48e63ff 100644 --- a/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types +++ b/tests/baselines/reference/destructuringObjectBindingPatternAndAssignment9SiblingInitializer.types @@ -126,8 +126,8 @@ function f3() { // Based on comment: // - https://github.com/microsoft/TypeScript/issues/49989#issuecomment-1852694486 declare const yadda: { a?: number, b?: number } | undefined ->yadda : { a?: number; b?: number; } | undefined -> : ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ +>yadda : { a?: number | undefined; b?: number | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number | undefined > : ^^^^^^^^^^^^^^^^^^ >b : number | undefined @@ -144,10 +144,10 @@ function f4() { > : ^^^^^^^^^^^^^^^^^^ >a : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->yadda ?? {} : { a?: number; b?: number; } -> : ^^^^^^ ^^^^^^ ^^^ ->yadda : { a?: number; b?: number; } | undefined -> : ^^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^ +>yadda ?? {} : { a?: number | undefined; b?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>yadda : { a?: number | undefined; b?: number | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ } diff --git a/tests/baselines/reference/destructuringParameterDeclaration10(strict=true).types b/tests/baselines/reference/destructuringParameterDeclaration10(strict=true).types index 6eabd387b0b59..39538dddb5fbe 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration10(strict=true).types +++ b/tests/baselines/reference/destructuringParameterDeclaration10(strict=true).types @@ -63,16 +63,16 @@ export function prepareConfigWithoutAnnotation({ export const prepareConfigWithContextualSignature: (param:{ >prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void > : ^ ^^ ^^^^^ ->param : { additionalFiles?: Partial>; } -> : ^^^^^^^^^^^^^^^^^^^^ ^^^ +>param : { additionalFiles?: Partial> | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ additionalFiles?: Partial>; >additionalFiles : Partial> | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ }) => void = ({ ->({ additionalFiles: { json = [] } = {}} = {}) => { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ +>({ additionalFiles: { json = [] } = {}} = {}) => { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial> | undefined; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ additionalFiles: { >additionalFiles : any diff --git a/tests/baselines/reference/destructuringParameterDeclaration9(strict=true).types b/tests/baselines/reference/destructuringParameterDeclaration9(strict=true).types index e95d65bd2dff4..b4db5954f4111 100644 --- a/tests/baselines/reference/destructuringParameterDeclaration9(strict=true).types +++ b/tests/baselines/reference/destructuringParameterDeclaration9(strict=true).types @@ -65,8 +65,8 @@ export function prepareConfigWithoutAnnotation({ export const prepareConfigWithContextualSignature = ({ >prepareConfigWithContextualSignature : (param: { additionalFiles?: Partial>; }) => void > : ^ ^^ ^^^^^ ->({ additionalFiles: { json = [] } = {}} = {})=> { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial>; }) => void -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +>({ additionalFiles: { json = [] } = {}} = {})=> { json // string[]} : ({ additionalFiles: { json } }?: { additionalFiles?: Partial> | undefined; }) => void +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ additionalFiles: { >additionalFiles : any diff --git a/tests/baselines/reference/duplicateObjectLiteralProperty_computedNameNegative1.types b/tests/baselines/reference/duplicateObjectLiteralProperty_computedNameNegative1.types index 3502ce16af34e..7d9d167fe4b63 100644 --- a/tests/baselines/reference/duplicateObjectLiteralProperty_computedNameNegative1.types +++ b/tests/baselines/reference/duplicateObjectLiteralProperty_computedNameNegative1.types @@ -6,8 +6,8 @@ function bar(props: { x?: string; y?: string }) { >bar : (props: { x?: string; y?: string; }) => { [x: string]: number; } > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->props : { x?: string; y?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>props : { x?: string | undefined; y?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | undefined > : ^^^^^^^^^^^^^^^^^^ >y : string | undefined @@ -22,8 +22,8 @@ function bar(props: { x?: string; y?: string }) { > : ^^^^^^ >"" : "" > : ^^ ->props : { x?: string; y?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>props : { x?: string | undefined; y?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return { >{ [x]: 1, [y]: 2, } : { [x: string]: number; } diff --git a/tests/baselines/reference/elementAccessChain.types b/tests/baselines/reference/elementAccessChain.types index 5a6e17ab55fee..82f68b5032f13 100644 --- a/tests/baselines/reference/elementAccessChain.types +++ b/tests/baselines/reference/elementAccessChain.types @@ -80,12 +80,12 @@ o3.b?.["c"]; > : ^^^ declare const o4: { b?: { c: { d?: { e: string } } } }; ->o4 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o4 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } -> : ^^^^^^ ^^^ +>c : { d?: { e: string; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string @@ -96,12 +96,12 @@ o4.b?.["c"].d?.e; > : ^^^^^^^^^^^^^^^^^^ >o4.b?.["c"].d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4.b?.["c"] : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o4.b?.["c"] : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o4.b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o4 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >"c" : "c" @@ -116,12 +116,12 @@ o4.b?.["c"].d?.["e"]; > : ^^^^^^^^^^^^^^^^^^ >o4.b?.["c"].d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4.b?.["c"] : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o4.b?.["c"] : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o4.b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o4 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >"c" : "c" @@ -136,8 +136,8 @@ declare const o5: { b?(): { c: { d?: { e: string } } } }; > : ^^^^^^^^ ^^^ >b : (() => { c: { d?: { e: string; }; }; }) | undefined > : ^^^^^^^ ^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } -> : ^^^^^^ ^^^ +>c : { d?: { e: string; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string @@ -148,8 +148,8 @@ o5.b?.()["c"].d?.e; > : ^^^^^^^^^^^^^^^^^^ >o5.b?.()["c"].d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.b?.()["c"] : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.b?.()["c"] : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.b?.() : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined @@ -170,8 +170,8 @@ o5.b?.()["c"].d?.["e"]; > : ^^^^^^^^^^^^^^^^^^ >o5.b?.()["c"].d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.b?.()["c"] : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.b?.()["c"] : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.b?.() : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined @@ -192,8 +192,8 @@ o5["b"]?.()["c"].d?.e; > : ^^^^^^^^^^^^^^^^^^ >o5["b"]?.()["c"].d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5["b"]?.()["c"] : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5["b"]?.()["c"] : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5["b"]?.() : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >o5["b"] : (() => { c: { d?: { e: string; }; }; }) | undefined @@ -214,8 +214,8 @@ o5["b"]?.()["c"].d?.["e"]; > : ^^^^^^^^^^^^^^^^^^ >o5["b"]?.()["c"].d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5["b"]?.()["c"] : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5["b"]?.()["c"] : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5["b"]?.() : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >o5["b"] : (() => { c: { d?: { e: string; }; }; }) | undefined diff --git a/tests/baselines/reference/emitClassExpressionInDeclarationFile.js b/tests/baselines/reference/emitClassExpressionInDeclarationFile.js index b975cf77eb8b5..a41aa2b39e029 100644 --- a/tests/baselines/reference/emitClassExpressionInDeclarationFile.js +++ b/tests/baselines/reference/emitClassExpressionInDeclarationFile.js @@ -92,7 +92,7 @@ export declare function WithTags>(Base: T): { new (...args: any[]): { tags(): void; foo(): void; - name?: string; + name?: string | undefined; }; getTags(): void; } & T; @@ -100,7 +100,7 @@ declare const Test_base: { new (...args: any[]): { tags(): void; foo(): void; - name?: string; + name?: string | undefined; }; getTags(): void; } & typeof FooItem; diff --git a/tests/baselines/reference/genericCallInferenceConditionalType2.types b/tests/baselines/reference/genericCallInferenceConditionalType2.types index c9c143a7dd8d2..50327ae434c79 100644 --- a/tests/baselines/reference/genericCallInferenceConditionalType2.types +++ b/tests/baselines/reference/genericCallInferenceConditionalType2.types @@ -24,18 +24,18 @@ declare function wrapComponent

( > : ^ const WrappedComponent = wrapComponent( ->WrappedComponent : (props: { as?: T | undefined; className?: string; }) => unknown -> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^ ->wrapComponent( (props: { as?: T | undefined; className?: string; }) => { return null; },) : (props: { as?: T | undefined; className?: string; }) => unknown -> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^ +>WrappedComponent : (props: { as?: T | undefined; className?: string | undefined; }) => unknown +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>wrapComponent( (props: { as?: T | undefined; className?: string; }) => { return null; },) : (props: { as?: T | undefined; className?: string | undefined; }) => unknown +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >wrapComponent :

(component: (props: P) => unknown) => (props: P) => unknown > : ^ ^^ ^^ ^^^^^ (props: { >(props: { as?: T | undefined; className?: string; }) => { return null; } : (props: { as?: T | undefined; className?: string; }) => null > : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^ ^^^^^^^^^ ->props : { as?: T | undefined; className?: string; } -> : ^^^^^^^ ^^^^^^^^^^^^^^ ^^^ +>props : { as?: T | undefined; className?: string | undefined; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ as?: T | undefined; >as : T | undefined @@ -51,10 +51,10 @@ const WrappedComponent = wrapComponent( ); type RetrievedProps = ComponentProps; ->RetrievedProps : { as?: string | undefined; className?: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ->WrappedComponent : (props: { as?: T | undefined; className?: string; }) => unknown -> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^ ^^^^^^^^ +>RetrievedProps : { as?: string | undefined; className?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>WrappedComponent : (props: { as?: T | undefined; className?: string | undefined; }) => unknown +> : ^ ^^^^^^^^^ ^^^^^^^^^^^ ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare const f: (f: (x: T) => unknown) => (x: T) => unknown >f : (f: (x: T) => unknown) => (x: T) => unknown diff --git a/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types b/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types index 6f760d214037e..6415679d8d345 100644 --- a/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types +++ b/tests/baselines/reference/homomorphicMappedTypeIntersectionAssignability.types @@ -6,8 +6,8 @@ function f( > : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ a: { weak?: string } & Readonly & { name: "ok" }, ->a : { weak?: string; } & Readonly & { name: "ok"; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>a : { weak?: string | undefined; } & Readonly & { name: "ok"; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >weak : string | undefined > : ^^^^^^^^^^^^^^^^^^ >name : "ok" @@ -26,19 +26,19 @@ function f( > : ^^^^^^ c = a; // Works ->c = a : { weak?: string; } & Readonly & { name: "ok"; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>c = a : { weak?: string | undefined; } & Readonly & { name: "ok"; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >c : Readonly & { name: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ ->a : { weak?: string; } & Readonly & { name: "ok"; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>a : { weak?: string | undefined; } & Readonly & { name: "ok"; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ b = a; // Should also work ->b = a : { weak?: string; } & Readonly & { name: "ok"; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>b = a : { weak?: string | undefined; } & Readonly & { name: "ok"; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >b : Readonly > : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ->a : { weak?: string; } & Readonly & { name: "ok"; } -> : ^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>a : { weak?: string | undefined; } & Readonly & { name: "ok"; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ } diff --git a/tests/baselines/reference/indexSignatures1.types b/tests/baselines/reference/indexSignatures1.types index 8dff518b5679a..bc8fd712ea2a8 100644 --- a/tests/baselines/reference/indexSignatures1.types +++ b/tests/baselines/reference/indexSignatures1.types @@ -1328,8 +1328,8 @@ const directive = Symbol('directive'); declare function foo(options: { [x in string]: (arg: TArg) => TRet } & { [directive]?: TDir }): void; >foo : (options: { [x in string]: (arg: TArg) => TRet; } & { [directive]?: TDir; }) => void > : ^ ^^ ^^ ^^ ^^ ^^^^^ ->options : { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir; } -> : ^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>options : { [x: string]: (arg: TArg) => TRet; } & { [directive]?: TDir | undefined; } +> : ^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >arg : TArg > : ^^^^ >[directive] : TDir | undefined diff --git a/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.types b/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.types index 97c24e7bcd0c4..bc33295351b0c 100644 --- a/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.types +++ b/tests/baselines/reference/inlineJsxFactoryDeclarationsLocalTypes.types @@ -14,8 +14,8 @@ export namespace dom { > : ^^^^ props: { ->props : { children?: Element[]; } -> : ^^^^^^^^^^^^^ ^^^ +>props : { children?: Element[] | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ children?: Element[]; >children : Element[] | undefined @@ -59,8 +59,8 @@ export namespace predom { > : ^^^^ props: { ->props : { children?: Element[]; } -> : ^^^^^^^^^^^^^ ^^^ +>props : { children?: Element[] | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ children?: Element[]; >children : Element[] | undefined @@ -101,8 +101,8 @@ export const MySFC = (props: {x: number, y: number, children?: predom.JSX.Elemen > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ >(props: {x: number, y: number, children?: predom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{...this.props.children}

: (props: { x: number; y: number; children?: predom.JSX.Element[]; }) => predom.JSX.Element > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^ ->props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -119,28 +119,28 @@ export const MySFC = (props: {x: number, y: number, children?: predom.JSX.Elemen > : ^^^ >props.x : number > : ^^^^^^ ->props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >props.y : number > : ^^^^^^ ->props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >props.x + props.y : number > : ^^^^^^ >props.x : number > : ^^^^^^ ->props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >props.y : number > : ^^^^^^ ->props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >this.props.children : any @@ -171,8 +171,8 @@ export class MyClass implements predom.JSX.Element { > : ^^^^ constructor(public props: {x: number, y: number, children?: predom.JSX.Element[]}) {} ->props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -197,56 +197,56 @@ export class MyClass implements predom.JSX.Element { {this.props.x} + {this.props.y} = {this.props.x + this.props.y} >this.props.x : number > : ^^^^^^ ->this.props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >this.props.y : number > : ^^^^^^ ->this.props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >this.props.x + this.props.y : number > : ^^^^^^ >this.props.x : number > : ^^^^^^ ->this.props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >this.props.y : number > : ^^^^^^ ->this.props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ {...this.props.children} >this.props.children : predom.JSX.Element[] | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->this.props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>this.props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : { x: number; y: number; children?: predom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: predom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >children : predom.JSX.Element[] | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -344,8 +344,8 @@ const DOMSFC = (props: {x: number, y: number, children?: dom.JSX.Element[]}) => > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ >(props: {x: number, y: number, children?: dom.JSX.Element[]}) =>

{props.x} + {props.y} = {props.x + props.y}{props.children}

: (props: { x: number; y: number; children?: dom.JSX.Element[]; }) => dom.JSX.Element > : ^ ^^ ^^^^^^^^^^^^^^^^^^^^ ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -362,34 +362,34 @@ const DOMSFC = (props: {x: number, y: number, children?: dom.JSX.Element[]}) => > : ^^^ >props.x : number > : ^^^^^^ ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >props.y : number > : ^^^^^^ ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >props.x + props.y : number > : ^^^^^^ >props.x : number > : ^^^^^^ ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >props.y : number > : ^^^^^^ ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >props.children : dom.JSX.Element[] | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >children : dom.JSX.Element[] | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : any @@ -410,8 +410,8 @@ class DOMClass implements dom.JSX.Element { > : ^^^^ constructor(public props: {x: number, y: number, children?: dom.JSX.Element[]}) {} ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >y : number @@ -434,54 +434,54 @@ class DOMClass implements dom.JSX.Element { > : ^^^ >this.props.x : number > : ^^^^^^ ->this.props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >this.props.y : number > : ^^^^^^ ->this.props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >this.props.x + this.props.y : number > : ^^^^^^ >this.props.x : number > : ^^^^^^ ->this.props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >this.props.y : number > : ^^^^^^ ->this.props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : number > : ^^^^^^ >this.props.children : dom.JSX.Element[] | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->this.props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>this.props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : { x: number; y: number; children?: dom.JSX.Element[]; } -> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^ ^^^ +>props : { x: number; y: number; children?: dom.JSX.Element[] | undefined; } +> : ^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >children : dom.JSX.Element[] | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >p : any diff --git a/tests/baselines/reference/interfaceWithMultipleBaseTypes2.types b/tests/baselines/reference/interfaceWithMultipleBaseTypes2.types index 6c0a3a04a1469..747e225f62627 100644 --- a/tests/baselines/reference/interfaceWithMultipleBaseTypes2.types +++ b/tests/baselines/reference/interfaceWithMultipleBaseTypes2.types @@ -3,8 +3,8 @@ === interfaceWithMultipleBaseTypes2.ts === interface Base { x: { ->x : { a?: string; b: string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: string | undefined; b: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ a?: string; b: string; >a : string | undefined @@ -16,8 +16,8 @@ interface Base { interface Base2 { x: { ->x : { b: string; c?: number; } -> : ^^^^^ ^^^^^^ ^^^ +>x : { b: string; c?: number | undefined; } +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ b: string; c?: number; >b : string diff --git a/tests/baselines/reference/intersectionMemberOfUnionNarrowsCorrectly.types b/tests/baselines/reference/intersectionMemberOfUnionNarrowsCorrectly.types index 66fea21c5b7d8..320485d1609a2 100644 --- a/tests/baselines/reference/intersectionMemberOfUnionNarrowsCorrectly.types +++ b/tests/baselines/reference/intersectionMemberOfUnionNarrowsCorrectly.types @@ -18,16 +18,16 @@ type Ex = T extends U ? T : never; > : ^^^^^^^^ declare let x: Ex ->x : { kind?: "A"; a: string; } -> : ^^^^^^^^^ ^^^^^ ^^^ +>x : { kind?: "A" | undefined; a: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >kind : "A" | undefined > : ^^^^^^^^^^^^^^^ x.a >x.a : string > : ^^^^^^ ->x : { kind?: "A"; a: string; } -> : ^^^^^^^^^ ^^^^^ ^^^ +>x : { kind?: "A" | undefined; a: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >a : string > : ^^^^^^ diff --git a/tests/baselines/reference/intersectionOfTypeVariableHasApparentSignatures.types b/tests/baselines/reference/intersectionOfTypeVariableHasApparentSignatures.types index 0f050e66c3a5e..48a4f8163eb1d 100644 --- a/tests/baselines/reference/intersectionOfTypeVariableHasApparentSignatures.types +++ b/tests/baselines/reference/intersectionOfTypeVariableHasApparentSignatures.types @@ -3,8 +3,8 @@ === intersectionOfTypeVariableHasApparentSignatures.ts === interface Component

{ props: Readonly

& Readonly<{ children?: {} }>; ->props : Readonly

& Readonly<{ children?: {}; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ +>props : Readonly

& Readonly<{ children?: {} | undefined; }> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >children : {} | undefined > : ^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/intersectionPropertyCheck.types b/tests/baselines/reference/intersectionPropertyCheck.types index 556b332d60374..8bf62d6b9a90f 100644 --- a/tests/baselines/reference/intersectionPropertyCheck.types +++ b/tests/baselines/reference/intersectionPropertyCheck.types @@ -38,10 +38,10 @@ declare let wrong: { a: { y: string } }; > : ^^^^^^ let weak: { a?: { x?: number } } & { c?: string } = wrong; // Nested weak object type ->weak : { a?: { x?: number; }; } & { c?: string; } -> : ^^^^^^ ^^^^^^^^^^^^ ^^^ ->a : { x?: number; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>weak : { a?: { x?: number | undefined; } | undefined; } & { c?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a : { x?: number | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ >c : string | undefined @@ -52,8 +52,8 @@ let weak: { a?: { x?: number } } & { c?: string } = wrong; // Nested weak objec function foo(x: { a?: string }, y: T & { a: boolean }) { >foo : (x: { a?: string; }, y: T & { a: boolean; }) => void > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ->x : { a?: string; } -> : ^^^^^^ ^^^ +>x : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string | undefined > : ^^^^^^^^^^^^^^^^^^ >y : T & { a: boolean; } @@ -64,8 +64,8 @@ function foo(x: { a?: string }, y: T & { a: boolean }) { x = y; // Mismatched property in source intersection >x = y : T & { a: boolean; } > : ^^^^^^^^^ ^^^ ->x : { a?: string; } -> : ^^^^^^ ^^^ +>x : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : T & { a: boolean; } > : ^^^^^^^^^ ^^^ } diff --git a/tests/baselines/reference/intersectionsAndOptionalProperties.types b/tests/baselines/reference/intersectionsAndOptionalProperties.types index 2b551b8f54de5..5d2d0902afdda 100644 --- a/tests/baselines/reference/intersectionsAndOptionalProperties.types +++ b/tests/baselines/reference/intersectionsAndOptionalProperties.types @@ -2,8 +2,8 @@ === intersectionsAndOptionalProperties.ts === declare let x: { a?: number, b: string }; ->x : { a?: number; b: string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: number | undefined; b: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >a : number | undefined > : ^^^^^^^^^^^^^^^^^^ >b : string @@ -28,16 +28,16 @@ declare let z: { a: null } & { b: string }; x = y; // Error >x = y : { a: null; b: string; } > : ^^^^^ ^^^^^ ^^^ ->x : { a?: number; b: string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: number | undefined; b: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >y : { a: null; b: string; } > : ^^^^^ ^^^^^ ^^^ x = z; // Error >x = z : { a: null; } & { b: string; } > : ^^^^^ ^^^^^^^^^^^ ^^^ ->x : { a?: number; b: string; } -> : ^^^^^^ ^^^^^ ^^^ +>x : { a?: number | undefined; b: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >z : { a: null; } & { b: string; } > : ^^^^^ ^^^^^^^^^^^ ^^^ diff --git a/tests/baselines/reference/jsDeclarationsInterfaces(target=es2015).js b/tests/baselines/reference/jsDeclarationsInterfaces(target=es2015).js index 1198dfa916c45..4d8e6701a310e 100644 --- a/tests/baselines/reference/jsDeclarationsInterfaces(target=es2015).js +++ b/tests/baselines/reference/jsDeclarationsInterfaces(target=es2015).js @@ -142,9 +142,9 @@ export interface C { (x: T): U; (x: Q): T & Q; field: T & U; - optionalField?: T; + optionalField?: T | undefined; readonly readonlyField: T & U; - readonly readonlyOptionalField?: U; + readonly readonlyOptionalField?: U | undefined; method(): number; method(a: T & Q): Q & number; method(a?: number): number; diff --git a/tests/baselines/reference/jsDeclarationsInterfaces(target=es5).js b/tests/baselines/reference/jsDeclarationsInterfaces(target=es5).js index 1198dfa916c45..4d8e6701a310e 100644 --- a/tests/baselines/reference/jsDeclarationsInterfaces(target=es5).js +++ b/tests/baselines/reference/jsDeclarationsInterfaces(target=es5).js @@ -142,9 +142,9 @@ export interface C { (x: T): U; (x: Q): T & Q; field: T & U; - optionalField?: T; + optionalField?: T | undefined; readonly readonlyField: T & U; - readonly readonlyOptionalField?: U; + readonly readonlyOptionalField?: U | undefined; method(): number; method(a: T & Q): Q & number; method(a?: number): number; diff --git a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild2.types b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild2.types index 1011e4942c6b0..756b6c6748cbf 100644 --- a/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild2.types +++ b/tests/baselines/reference/jsxEmptyExpressionNotCountedAsChild2.types @@ -35,8 +35,8 @@ declare global { interface MockComponentInterface { new (): { __properties__: { bar?: number } & { __children__: () => number }; ->__properties__ : { bar?: number; } & { __children__: () => number; } -> : ^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>__properties__ : { bar?: number | undefined; } & { __children__: () => number; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >bar : number | undefined > : ^^^^^^^^^^^^^^^^^^ >__children__ : () => number diff --git a/tests/baselines/reference/jsxIntrinsicElementsCompatability.types b/tests/baselines/reference/jsxIntrinsicElementsCompatability.types index b4e8fd797d5ce..7b82cefcde8bf 100644 --- a/tests/baselines/reference/jsxIntrinsicElementsCompatability.types +++ b/tests/baselines/reference/jsxIntrinsicElementsCompatability.types @@ -15,8 +15,8 @@ import * as React from "react"; function SomeComponent(props: { element?: T } & JSX.IntrinsicElements[T]): JSX.Element { >SomeComponent : (props: { element?: T; } & JSX.IntrinsicElements[T]) => JSX.Element > : ^ ^^^^^^^^^ ^^ ^^ ^^^^^ ->props : { element?: T; } & JSX.IntrinsicElements[T] -> : ^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : { element?: T | undefined; } & JSX.IntrinsicElements[T] +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >element : T | undefined > : ^^^^^^^^^^^^^ >JSX : any diff --git a/tests/baselines/reference/jsxPropsAsIdentifierNames.types b/tests/baselines/reference/jsxPropsAsIdentifierNames.types index 4aacb660dc0f2..c0df88d155b0f 100644 --- a/tests/baselines/reference/jsxPropsAsIdentifierNames.types +++ b/tests/baselines/reference/jsxPropsAsIdentifierNames.types @@ -5,8 +5,8 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { div: { ->div : { static?: boolean; } -> : ^^^^^^^^^^^ ^^^ +>div : { static?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ static?: boolean; >static : boolean | undefined diff --git a/tests/baselines/reference/logicalAssignment8(target=es2015).types b/tests/baselines/reference/logicalAssignment8(target=es2015).types index 081e3da57c95a..05717fa3c632c 100644 --- a/tests/baselines/reference/logicalAssignment8(target=es2015).types +++ b/tests/baselines/reference/logicalAssignment8(target=es2015).types @@ -2,8 +2,8 @@ === logicalAssignment8.ts === declare const bar: { value?: number[] } | undefined ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ @@ -28,8 +28,8 @@ function foo1(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] @@ -61,8 +61,8 @@ function foo2(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] @@ -94,8 +94,8 @@ function foo3(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] diff --git a/tests/baselines/reference/logicalAssignment8(target=es2020).types b/tests/baselines/reference/logicalAssignment8(target=es2020).types index 081e3da57c95a..05717fa3c632c 100644 --- a/tests/baselines/reference/logicalAssignment8(target=es2020).types +++ b/tests/baselines/reference/logicalAssignment8(target=es2020).types @@ -2,8 +2,8 @@ === logicalAssignment8.ts === declare const bar: { value?: number[] } | undefined ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ @@ -28,8 +28,8 @@ function foo1(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] @@ -61,8 +61,8 @@ function foo2(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] @@ -94,8 +94,8 @@ function foo3(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] diff --git a/tests/baselines/reference/logicalAssignment8(target=es2021).types b/tests/baselines/reference/logicalAssignment8(target=es2021).types index 081e3da57c95a..05717fa3c632c 100644 --- a/tests/baselines/reference/logicalAssignment8(target=es2021).types +++ b/tests/baselines/reference/logicalAssignment8(target=es2021).types @@ -2,8 +2,8 @@ === logicalAssignment8.ts === declare const bar: { value?: number[] } | undefined ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ @@ -28,8 +28,8 @@ function foo1(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] @@ -61,8 +61,8 @@ function foo2(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] @@ -94,8 +94,8 @@ function foo3(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] diff --git a/tests/baselines/reference/logicalAssignment8(target=esnext).types b/tests/baselines/reference/logicalAssignment8(target=esnext).types index 081e3da57c95a..05717fa3c632c 100644 --- a/tests/baselines/reference/logicalAssignment8(target=esnext).types +++ b/tests/baselines/reference/logicalAssignment8(target=esnext).types @@ -2,8 +2,8 @@ === logicalAssignment8.ts === declare const bar: { value?: number[] } | undefined ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ @@ -28,8 +28,8 @@ function foo1(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] @@ -61,8 +61,8 @@ function foo2(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] @@ -94,8 +94,8 @@ function foo3(results: number[] | undefined) { > : ^^^^^^^^ >bar?.value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ ->bar : { value?: number[]; } | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>bar : { value?: number[] | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >[] : never[] diff --git a/tests/baselines/reference/logicalAssignment9.types b/tests/baselines/reference/logicalAssignment9.types index f1ec1494c1809..8bcf08a89c3d5 100644 --- a/tests/baselines/reference/logicalAssignment9.types +++ b/tests/baselines/reference/logicalAssignment9.types @@ -2,8 +2,8 @@ === logicalAssignment9.ts === declare let x: { a?: boolean }; ->x : { a?: boolean; } -> : ^^^^^^ ^^^ +>x : { a?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ @@ -12,8 +12,8 @@ x.a ??= true; > : ^^^^^^^ >x.a : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ ->x : { a?: boolean; } -> : ^^^^^^ ^^^ +>x : { a?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ >true : true @@ -24,8 +24,8 @@ x.a &&= false; > : ^^^^^^^^^^^^^^^^^ >x.a : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ ->x : { a?: boolean; } -> : ^^^^^^ ^^^ +>x : { a?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ >false : false diff --git a/tests/baselines/reference/mappedTypesArraysTuples.types b/tests/baselines/reference/mappedTypesArraysTuples.types index 5f2dc69223c9e..34848ec2de742 100644 --- a/tests/baselines/reference/mappedTypesArraysTuples.types +++ b/tests/baselines/reference/mappedTypesArraysTuples.types @@ -206,8 +206,8 @@ let y21 = nonpartial(x21); > : ^^^^^^^^^^^^^^^^^^^^^^ declare let x22: { a: number | undefined, b?: string[] }; ->x22 : { a: number | undefined; b?: string[]; } -> : ^^^^^ ^^^^^^ ^^^ +>x22 : { a: number | undefined; b?: string[] | undefined; } +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number | undefined > : ^^^^^^^^^^^^^^^^^^ >b : string[] | undefined @@ -220,8 +220,8 @@ let y22 = nonpartial(x22); > : ^^^^^^^^^^^^^^^^ ^^^ >nonpartial : (x: Partial) => T > : ^ ^^ ^^ ^^^^^ ->x22 : { a: number | undefined; b?: string[]; } -> : ^^^^^ ^^^^^^ ^^^ +>x22 : { a: number | undefined; b?: string[] | undefined; } +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type __Awaited = T extends PromiseLike ? U : T; >__Awaited : __Awaited diff --git a/tests/baselines/reference/mergedInstantiationAssignment.types b/tests/baselines/reference/mergedInstantiationAssignment.types index b5fa58d61fe9d..273d62ddba265 100644 --- a/tests/baselines/reference/mergedInstantiationAssignment.types +++ b/tests/baselines/reference/mergedInstantiationAssignment.types @@ -15,10 +15,10 @@ class GenericObject { } const v1 = new GenericObject() as GenericObject & ->v1 : GenericObject & ({ a?: string; } | { b?: number; }) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^ ->new GenericObject() as GenericObject & ({ a?: string } | { b?: number }) : GenericObject & ({ a?: string; } | { b?: number; }) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^ +>v1 : GenericObject & ({ a?: string | undefined; } | { b?: number | undefined; }) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>new GenericObject() as GenericObject & ({ a?: string } | { b?: number }) : GenericObject & ({ a?: string | undefined; } | { b?: number | undefined; }) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new GenericObject() : GenericObject > : ^^^^^^^^^^^^^^^^^^^^^ >GenericObject : typeof GenericObject @@ -35,8 +35,8 @@ v1.x = 432; > : ^^^ >v1.x : number > : ^^^^^^ ->v1 : GenericObject & ({ a?: string; } | { b?: number; }) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^ +>v1 : GenericObject & ({ a?: string | undefined; } | { b?: number | undefined; }) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >432 : 432 @@ -52,10 +52,10 @@ class GenericObjectWithoutSetter { } const v2 = new GenericObjectWithoutSetter() as GenericObjectWithoutSetter & ->v2 : GenericObjectWithoutSetter & ({ a?: string; } | { b?: number; }) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^ ->new GenericObjectWithoutSetter() as GenericObjectWithoutSetter & ({ a?: string } | { b?: number }) : GenericObjectWithoutSetter & ({ a?: string; } | { b?: number; }) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^ +>v2 : GenericObjectWithoutSetter & ({ a?: string | undefined; } | { b?: number | undefined; }) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>new GenericObjectWithoutSetter() as GenericObjectWithoutSetter & ({ a?: string } | { b?: number }) : GenericObjectWithoutSetter & ({ a?: string | undefined; } | { b?: number | undefined; }) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new GenericObjectWithoutSetter() : GenericObjectWithoutSetter > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >GenericObjectWithoutSetter : typeof GenericObjectWithoutSetter @@ -72,8 +72,8 @@ v2.x = 42; > : ^^ >v2.x : number > : ^^^^^^ ->v2 : GenericObjectWithoutSetter & ({ a?: string; } | { b?: number; }) -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^ +>v2 : GenericObjectWithoutSetter & ({ a?: string | undefined; } | { b?: number | undefined; }) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >42 : 42 @@ -91,10 +91,10 @@ class NormalObject { } const v3 = new NormalObject() as NormalObject & ->v3 : NormalObject & ({ a?: string; } | { b?: number; }) -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^ ->new NormalObject() as NormalObject & ({ a?: string } | { b?: number }) : NormalObject & ({ a?: string; } | { b?: number; }) -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^ +>v3 : NormalObject & ({ a?: string | undefined; } | { b?: number | undefined; }) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>new NormalObject() as NormalObject & ({ a?: string } | { b?: number }) : NormalObject & ({ a?: string | undefined; } | { b?: number | undefined; }) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >new NormalObject() : NormalObject > : ^^^^^^^^^^^^ >NormalObject : typeof NormalObject @@ -111,8 +111,8 @@ v3.x = 42; > : ^^ >v3.x : number > : ^^^^^^ ->v3 : NormalObject & ({ a?: string; } | { b?: number; }) -> : ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^ +>v3 : NormalObject & ({ a?: string | undefined; } | { b?: number | undefined; }) +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >42 : 42 diff --git a/tests/baselines/reference/methodSignaturesWithOverloads.types b/tests/baselines/reference/methodSignaturesWithOverloads.types index 8ce9b0ed5e10a..cd515f1692ec6 100644 --- a/tests/baselines/reference/methodSignaturesWithOverloads.types +++ b/tests/baselines/reference/methodSignaturesWithOverloads.types @@ -4,8 +4,8 @@ // Object type literals permit overloads with optionality but they must match var c: { ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ func4?(x: number): number; >func4 : { (x: number): number; (s: string): string; } | undefined @@ -35,8 +35,8 @@ var c: { }; var c2: { ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ func4(x: T): number; >func4 : { (x: T): number; (s: T_1): string; } | undefined diff --git a/tests/baselines/reference/methodSignaturesWithOverloads2.types b/tests/baselines/reference/methodSignaturesWithOverloads2.types index 40859e8dcf004..c5c869c1d7cab 100644 --- a/tests/baselines/reference/methodSignaturesWithOverloads2.types +++ b/tests/baselines/reference/methodSignaturesWithOverloads2.types @@ -4,8 +4,8 @@ // Object type literals permit overloads with optionality but they must match var c: { ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ func4?(x: number): number; >func4 : { (x: number): number; (s: string): string; } | undefined @@ -40,14 +40,14 @@ c.func4 = c.func5; > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >c.func4 : { (x: number): number; (s: string): string; } | undefined > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >func4 : { (x: number): number; (s: string): string; } | undefined > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >c.func5 : { (x: number): number; (s: string): string; } | undefined > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >func5 : { (x: number): number; (s: string): string; } | undefined > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ @@ -56,21 +56,21 @@ c.func5 = c.func4; > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >c.func5 : { (x: number): number; (s: string): string; } | undefined > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >func5 : { (x: number): number; (s: string): string; } | undefined > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >c.func4 : { (x: number): number; (s: string): string; } | undefined > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; }; } -> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c : { func4?(x: number): number; func4?(s: string): string; func5?: { (x: number): number; (s: string): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >func4 : { (x: number): number; (s: string): string; } | undefined > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^^^^^^^^^^^^^ var c2: { ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ func4?(x: T): number; >func4 : { (x: T): number; (s: T_1): string; } | undefined @@ -105,14 +105,14 @@ c2.func4 = c2.func5; > : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >c2.func4 : { (x: T): number; (s: T): string; } | undefined > : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >func4 : { (x: T): number; (s: T): string; } | undefined > : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >c2.func5 : { (x: T): number; (s: T): string; } | undefined > : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >func5 : { (x: T): number; (s: T): string; } | undefined > : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ @@ -121,14 +121,14 @@ c2.func5 = c2.func4; > : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >c2.func5 : { (x: T): number; (s: T): string; } | undefined > : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >func5 : { (x: T): number; (s: T): string; } | undefined > : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ >c2.func4 : { (x: T): number; (s: T): string; } | undefined > : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ ->c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; }; } -> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^ ^^^ +>c2 : { func4?(x: T): number; func4?(s: T): string; func5?: { (x: T): number; (s: T): string; } | undefined; } +> : ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^ >func4 : { (x: T): number; (s: T): string; } | undefined > : ^^^ ^^ ^^ ^^^ ^^^ ^^ ^^ ^^^ ^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/narrowingIntersection.types b/tests/baselines/reference/narrowingIntersection.types index b3c672f9465c6..7f7655c44fd5e 100644 --- a/tests/baselines/reference/narrowingIntersection.types +++ b/tests/baselines/reference/narrowingIntersection.types @@ -43,8 +43,8 @@ function test1(result: Disjoint): string { throw result.err; >result.err : FooAndBaz > : ^^^^^^^^^ ->result : { readonly value?: never; readonly err: FooAndBaz; } -> : ^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ +>result : { readonly value?: undefined; readonly err: FooAndBaz; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >err : FooAndBaz > : ^^^^^^^^^ } @@ -52,8 +52,8 @@ function test1(result: Disjoint): string { return result.value; >result.value : string > : ^^^^^^ ->result : { readonly value: string; readonly err?: never; } -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ +>result : { readonly value: string; readonly err?: undefined; } +> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >value : string > : ^^^^^^ } diff --git a/tests/baselines/reference/nonObjectUnionNestedExcessPropertyCheck.types b/tests/baselines/reference/nonObjectUnionNestedExcessPropertyCheck.types index 37b533f26b8fe..8fd3075d34bca 100644 --- a/tests/baselines/reference/nonObjectUnionNestedExcessPropertyCheck.types +++ b/tests/baselines/reference/nonObjectUnionNestedExcessPropertyCheck.types @@ -7,8 +7,8 @@ interface IProps { > : ^^^^^^^^^^^^^^^^^^ nestedProp?: { ->nestedProp : { testBool?: boolean; } | undefined -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^ +>nestedProp : { testBool?: boolean | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ testBool?: boolean; >testBool : boolean | undefined diff --git a/tests/baselines/reference/objectLiteralContextualTyping.types b/tests/baselines/reference/objectLiteralContextualTyping.types index faf02d937c6f6..0921f95ee8e14 100644 --- a/tests/baselines/reference/objectLiteralContextualTyping.types +++ b/tests/baselines/reference/objectLiteralContextualTyping.types @@ -111,8 +111,8 @@ var w: number; declare function bar(param: { x?: T }): T; >bar : (param: { x?: T; }) => T > : ^ ^^ ^^ ^^^^^ ->param : { x?: T; } -> : ^^^^^^ ^^^ +>param : { x?: T | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^ >x : T | undefined > : ^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/objectLiteralNormalization.js b/tests/baselines/reference/objectLiteralNormalization.js index c26a767f42f6c..12cd5eabd4e10 100644 --- a/tests/baselines/reference/objectLiteralNormalization.js +++ b/tests/baselines/reference/objectLiteralNormalization.js @@ -147,14 +147,14 @@ declare let opts: { baz?: boolean; }; declare let c1: { - foo?: string; - bar?: string; - baz?: boolean; + foo?: string | undefined; + bar?: string | undefined; + baz?: boolean | undefined; }; declare let c2: { - foo?: string; - bar?: string; - baz?: boolean; + foo?: string | undefined; + bar?: string | undefined; + baz?: boolean | undefined; }; declare let c3: { a: number; diff --git a/tests/baselines/reference/objectLiteralNormalization.types b/tests/baselines/reference/objectLiteralNormalization.types index 5905535a8a209..8c330fa0afaaf 100644 --- a/tests/baselines/reference/objectLiteralNormalization.types +++ b/tests/baselines/reference/objectLiteralNormalization.types @@ -262,8 +262,8 @@ let b3 = { ...b2 }; // Before widening {} acts like { [x: string]: undefined }, which is a // subtype of types with all optional properties declare let opts: { foo?: string, bar?: string, baz?: boolean }; ->opts : { foo?: string; bar?: string; baz?: boolean; } -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ +>opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >foo : string | undefined > : ^^^^^^^^^^^^^^^^^^ >bar : string | undefined @@ -272,30 +272,30 @@ declare let opts: { foo?: string, bar?: string, baz?: boolean }; > : ^^^^^^^^^^^^^^^^^^^ let c1 = !true ? {} : opts; ->c1 : { foo?: string; bar?: string; baz?: boolean; } -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ->!true ? {} : opts : { foo?: string; bar?: string; baz?: boolean; } -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ +>c1 : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>!true ? {} : opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >!true : false > : ^^^^^ >true : true > : ^^^^ >{} : {} > : ^^ ->opts : { foo?: string; bar?: string; baz?: boolean; } -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ +>opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ let c2 = !true ? opts : {}; ->c2 : { foo?: string; bar?: string; baz?: boolean; } -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ ->!true ? opts : {} : { foo?: string; bar?: string; baz?: boolean; } -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ +>c2 : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>!true ? opts : {} : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >!true : false > : ^^^^^ >true : true > : ^^^^ ->opts : { foo?: string; bar?: string; baz?: boolean; } -> : ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^^ +>opts : { foo?: string | undefined; bar?: string | undefined; baz?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ diff --git a/tests/baselines/reference/objectTypesWithOptionalProperties.types b/tests/baselines/reference/objectTypesWithOptionalProperties.types index cb4a32cd9c6c0..3850fa94895f2 100644 --- a/tests/baselines/reference/objectTypesWithOptionalProperties.types +++ b/tests/baselines/reference/objectTypesWithOptionalProperties.types @@ -4,8 +4,8 @@ // Basic uses of optional properties var a: { ->a : { x?: number; } -> : ^^^^^^ ^^^ +>a : { x?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ x?: number; // ok >x : number | undefined diff --git a/tests/baselines/reference/optionalPropertyAssignableToStringIndexSignature.types b/tests/baselines/reference/optionalPropertyAssignableToStringIndexSignature.types index 6a3e456f87062..1991eecd9d7a2 100644 --- a/tests/baselines/reference/optionalPropertyAssignableToStringIndexSignature.types +++ b/tests/baselines/reference/optionalPropertyAssignableToStringIndexSignature.types @@ -2,8 +2,8 @@ === optionalPropertyAssignableToStringIndexSignature.ts === declare let optionalProperties: { k1?: string }; ->optionalProperties : { k1?: string; } -> : ^^^^^^^ ^^^ +>optionalProperties : { k1?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >k1 : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -20,12 +20,12 @@ declare let stringDictionary: { [key: string]: string }; > : ^^^^^^ stringDictionary = optionalProperties; // ok ->stringDictionary = optionalProperties : { k1?: string; } -> : ^^^^^^^ ^^^ +>stringDictionary = optionalProperties : { k1?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >stringDictionary : { [key: string]: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->optionalProperties : { k1?: string; } -> : ^^^^^^^ ^^^ +>optionalProperties : { k1?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ stringDictionary = undefinedProperties; // error >stringDictionary = undefinedProperties : { k1: string | undefined; } @@ -42,18 +42,18 @@ declare let probablyArray: { [key: number]: string }; > : ^^^^^^ declare let numberLiteralKeys: { 1?: string }; ->numberLiteralKeys : { 1?: string; } -> : ^^^^^^ ^^^ +>numberLiteralKeys : { 1?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >1 : string | undefined > : ^^^^^^^^^^^^^^^^^^ probablyArray = numberLiteralKeys; // error ->probablyArray = numberLiteralKeys : { 1?: string; } -> : ^^^^^^ ^^^ +>probablyArray = numberLiteralKeys : { 1?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >probablyArray : { [key: number]: string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^ ->numberLiteralKeys : { 1?: string; } -> : ^^^^^^ ^^^ +>numberLiteralKeys : { 1?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ declare let optionalUndefined: { k1?: undefined }; >optionalUndefined : { k1?: undefined; } @@ -74,8 +74,8 @@ function f() { > : ^ ^^^^^^^^^^^ let optional: { k1?: T } = undefined!; ->optional : { k1?: T; } -> : ^^^^^^^ ^^^ +>optional : { k1?: T | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^ >k1 : T | undefined > : ^^^^^^^^^^^^^ >undefined! : never @@ -88,7 +88,7 @@ function f() { > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >key : string > : ^^^^^^ ->optional : { k1?: T; } -> : ^^^^^^^ ^^^ +>optional : { k1?: T | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/parameterDestructuringObjectLiteral.types b/tests/baselines/reference/parameterDestructuringObjectLiteral.types index a4310da0ddc15..a364ed1e5f69c 100644 --- a/tests/baselines/reference/parameterDestructuringObjectLiteral.types +++ b/tests/baselines/reference/parameterDestructuringObjectLiteral.types @@ -8,8 +8,8 @@ const fn1 = (options: { headers?: {} }) => { }; > : ^ ^^ ^^^^^^^^^ >(options: { headers?: {} }) => { } : (options: { headers?: {}; }) => void > : ^ ^^ ^^^^^^^^^ ->options : { headers?: {}; } -> : ^^^^^^^^^^^^ ^^^ +>options : { headers?: {} | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >headers : {} | undefined > : ^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types b/tests/baselines/reference/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types index 57159758c5900..51b49b0820f27 100644 --- a/tests/baselines/reference/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types +++ b/tests/baselines/reference/paramsOnlyHaveLiteralTypesWhenAppropriatelyContextualized.types @@ -74,8 +74,8 @@ export function appendToOptionalArray< // e.g. const foo: {x?: number[]; y?: string[]; } = {}; ->foo : { x?: number[]; y?: string[]; } -> : ^^^^^^ ^^^^^^ ^^^ +>foo : { x?: number[] | undefined; y?: string[] | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number[] | undefined > : ^^^^^^^^^^^^^^^^^^^^ >y : string[] | undefined @@ -88,8 +88,8 @@ appendToOptionalArray(foo, 'x', 123); // ok > : ^^^^ >appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ->foo : { x?: number[]; y?: string[]; } -> : ^^^^^^ ^^^^^^ ^^^ +>foo : { x?: number[] | undefined; y?: string[] | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'x' : "x" > : ^^^ >123 : 123 @@ -100,8 +100,8 @@ appendToOptionalArray(foo, 'y', 'bar'); // ok > : ^^^^ >appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ->foo : { x?: number[]; y?: string[]; } -> : ^^^^^^ ^^^^^^ ^^^ +>foo : { x?: number[] | undefined; y?: string[] | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'y' : "y" > : ^^^ >'bar' : "bar" @@ -112,8 +112,8 @@ appendToOptionalArray(foo, 'y', 12); // should fail > : ^^^^ >appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ->foo : { x?: number[]; y?: string[]; } -> : ^^^^^^ ^^^^^^ ^^^ +>foo : { x?: number[] | undefined; y?: string[] | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'y' : "y" > : ^^^ >12 : 12 @@ -124,8 +124,8 @@ appendToOptionalArray(foo, 'x', "no"); // should fail > : ^^^^ >appendToOptionalArray : (object: { [x in K]?: Lower[]; }, key: K, value: T) => void > : ^ ^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^^^^^ ->foo : { x?: number[]; y?: string[]; } -> : ^^^^^^ ^^^^^^ ^^^ +>foo : { x?: number[] | undefined; y?: string[] | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >'x' : "x" > : ^^^ >"no" : "no" diff --git a/tests/baselines/reference/parserShorthandPropertyAssignment1.types b/tests/baselines/reference/parserShorthandPropertyAssignment1.types index 49f9bb6ca48d2..5722d8ebab327 100644 --- a/tests/baselines/reference/parserShorthandPropertyAssignment1.types +++ b/tests/baselines/reference/parserShorthandPropertyAssignment1.types @@ -4,8 +4,8 @@ function foo(obj: { name?: string; id: number }) { } >foo : (obj: { name?: string; id: number; }) => void > : ^ ^^ ^^^^^^^^^ ->obj : { name?: string; id: number; } -> : ^^^^^^^^^ ^^^^^^ ^^^ +>obj : { name?: string | undefined; id: number; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >name : string | undefined > : ^^^^^^^^^^^^^^^^^^ >id : number diff --git a/tests/baselines/reference/primitiveUnionDetection.types b/tests/baselines/reference/primitiveUnionDetection.types index 7619f8e94f5ce..d39f6f1d1d2dd 100644 --- a/tests/baselines/reference/primitiveUnionDetection.types +++ b/tests/baselines/reference/primitiveUnionDetection.types @@ -10,8 +10,8 @@ type Kind = "one" | "two" | "three"; declare function getInterfaceFromString(options?: { type?: T } & { type?: Kind }): T; >getInterfaceFromString : (options?: { type?: T; } & { type?: Kind; }) => T > : ^ ^^^^^^^^^ ^^ ^^^ ^^^^^ ->options : ({ type?: T; } & { type?: Kind; }) | undefined -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^ +>options : ({ type?: T | undefined; } & { type?: Kind | undefined; }) | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >type : T | undefined > : ^^^^^^^^^^^^^ >type : Kind | undefined diff --git a/tests/baselines/reference/propertyAccessChain.types b/tests/baselines/reference/propertyAccessChain.types index 6b16547c73021..d7ee01ea7f3e8 100644 --- a/tests/baselines/reference/propertyAccessChain.types +++ b/tests/baselines/reference/propertyAccessChain.types @@ -56,12 +56,12 @@ o3.b?.c; > : ^^^^^^^^^^^^^^^^^^ declare const o4: { b?: { c: { d?: { e: string } } } }; ->o4 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o4 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } -> : ^^^^^^ ^^^ +>c : { d?: { e: string; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string @@ -72,16 +72,16 @@ o4.b?.c.d?.e; > : ^^^^^^^^^^^^^^^^^^ >o4.b?.c.d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4.b?.c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o4.b?.c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o4.b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o4 : { b?: { c: { d?: { e: string; }; }; }; } -> : ^^^^^^ ^^^ +>o4 : { b?: { c: { d?: { e: string; }; }; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >b : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string | undefined @@ -92,8 +92,8 @@ declare const o5: { b?(): { c: { d?: { e: string } } } }; > : ^^^^^^^^ ^^^ >b : (() => { c: { d?: { e: string; }; }; }) | undefined > : ^^^^^^^ ^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } -> : ^^^^^^ ^^^ +>c : { d?: { e: string; } | undefined; } +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string @@ -104,8 +104,8 @@ o5.b?.().c.d?.e; > : ^^^^^^^^^^^^^^^^^^ >o5.b?.().c.d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ ->o5.b?.().c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>o5.b?.().c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >o5.b?.() : { c: { d?: { e: string; }; }; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >o5.b : (() => { c: { d?: { e: string; }; }; }) | undefined @@ -114,8 +114,8 @@ o5.b?.().c.d?.e; > : ^^^^^^^^ ^^^ >b : (() => { c: { d?: { e: string; }; }; }) | undefined > : ^^^^^^^ ^^^^^^^^^^^^^ ->c : { d?: { e: string; }; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>c : { d?: { e: string; } | undefined; } | undefined +> : ^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >d : { e: string; } | undefined > : ^^^^^ ^^^^^^^^^^^^^^^ >e : string | undefined diff --git a/tests/baselines/reference/quickIntersectionCheckCorrectlyCachesErrors.types b/tests/baselines/reference/quickIntersectionCheckCorrectlyCachesErrors.types index f159e109003c4..d4196410381dd 100644 --- a/tests/baselines/reference/quickIntersectionCheckCorrectlyCachesErrors.types +++ b/tests/baselines/reference/quickIntersectionCheckCorrectlyCachesErrors.types @@ -3,8 +3,8 @@ === quickIntersectionCheckCorrectlyCachesErrors.tsx === interface F

{ (props: P & { children?: boolean }): void; ->props : P & { children?: boolean; } -> : ^^^^^^^^^^^^^^^^^ ^^^ +>props : P & { children?: boolean | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >children : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/spellingSuggestionJSXAttribute.types b/tests/baselines/reference/spellingSuggestionJSXAttribute.types index 2d24b4e362243..89849f0358959 100644 --- a/tests/baselines/reference/spellingSuggestionJSXAttribute.types +++ b/tests/baselines/reference/spellingSuggestionJSXAttribute.types @@ -15,8 +15,8 @@ import * as React from "react"; function MyComp2(props: { className?: string, htmlFor?: string }) { >MyComp2 : (props: { className?: string; htmlFor?: string; }) => never > : ^ ^^ ^^^^^^^^^^ ->props : { className?: string; htmlFor?: string; } -> : ^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^ +>props : { className?: string | undefined; htmlFor?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >className : string | undefined > : ^^^^^^^^^^^^^^^^^^ >htmlFor : string | undefined @@ -29,8 +29,8 @@ function MyComp2(props: { className?: string, htmlFor?: string }) { class MyComp extends React.Component<{ className?: string, htmlFor?: string }> { } >MyComp : MyComp > : ^^^^^^ ->React.Component : React.Component<{ className?: string; htmlFor?: string; }, {}, any> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^ ^^^^^^^^^^^^^ +>React.Component : React.Component<{ className?: string | undefined; htmlFor?: string | undefined; }, {}, any> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >React : typeof React > : ^^^^^^^^^^^^ >Component : typeof React.Component diff --git a/tests/baselines/reference/spreadDuplicate.types b/tests/baselines/reference/spreadDuplicate.types index e36d1923ebc92..91ca56043f5dc 100644 --- a/tests/baselines/reference/spreadDuplicate.types +++ b/tests/baselines/reference/spreadDuplicate.types @@ -10,8 +10,8 @@ declare let a: { a: string }; > : ^^^^^^ declare let b: { a?: string }; ->b : { a?: string; } -> : ^^^^^^ ^^^ +>b : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -52,8 +52,8 @@ let b1 = { a: 123, ...b }; // string | number > : ^^^^^^ >123 : 123 > : ^^^ ->b : { a?: string; } -> : ^^^^^^ ^^^ +>b : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ let c1 = { a: 123, ...c }; // string | undefined (Error) >c1 : { a: string | undefined; } @@ -108,14 +108,14 @@ let b2 = { a: 123, ...(t ? b : {}) }; // string | number > : ^^^^^^ >123 : 123 > : ^^^ ->(t ? b : {}) : { a?: string; } -> : ^^^^^^ ^^^ ->t ? b : {} : { a?: string; } -> : ^^^^^^ ^^^ +>(t ? b : {}) : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>t ? b : {} : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >t : boolean > : ^^^^^^^ ->b : { a?: string; } -> : ^^^^^^ ^^^ +>b : { a?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{} : {} > : ^^ diff --git a/tests/baselines/reference/spreadIdenticalTypesRemoved.types b/tests/baselines/reference/spreadIdenticalTypesRemoved.types index dd9b91bb66a55..74bb168536d02 100644 --- a/tests/baselines/reference/spreadIdenticalTypesRemoved.types +++ b/tests/baselines/reference/spreadIdenticalTypesRemoved.types @@ -77,14 +77,14 @@ interface Animal2 { > : ^^^^^^^^^^^^^^^^^^ } function billOwner(pet: Animal2) { ->billOwner : (pet: Animal2) => { paid: boolean; name?: string | undefined; owner?: string; } -> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>billOwner : (pet: Animal2) => { paid: boolean; name?: string | undefined; owner?: string | undefined; } +> : ^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >pet : Animal2 > : ^^^^^^^ return { ->{ ...(pet.owner && pet), paid: false } : { paid: boolean; name?: string | undefined; owner?: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>{ ...(pet.owner && pet), paid: false } : { paid: boolean; name?: string | undefined; owner?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ...(pet.owner && pet), >(pet.owner && pet) : "" | Animal2 | undefined diff --git a/tests/baselines/reference/spreadObjectPermutations(exactoptionalpropertytypes=false).types b/tests/baselines/reference/spreadObjectPermutations(exactoptionalpropertytypes=false).types index 660e4d74b1545..9f7cf6de35c5e 100644 --- a/tests/baselines/reference/spreadObjectPermutations(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/spreadObjectPermutations(exactoptionalpropertytypes=false).types @@ -8,8 +8,8 @@ declare const a: { x: string | number }; > : ^^^^^^^^^^^^^^^ declare const b: { x?: string | number }; ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string | number | undefined > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -28,12 +28,12 @@ const v_a = { ...a }; > : ^^^^^ ^^^ const v_b = { ...b }; ->v_b : { x?: string | number; } -> : ^^^^^^ ^^^ ->{ ...b } : { x?: string | number; } -> : ^^^^^^ ^^^ ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>v_b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ ...b } : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const v_c = { ...c }; >v_c : { x?: string | number | undefined; } @@ -50,8 +50,8 @@ const v_ab = { ...a, ...b }; > : ^^^^^ ^^^ >a : { x: string | number; } > : ^^^^^ ^^^ ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const v_ac = { ...a, ...c }; >v_ac : { x: string | number; } @@ -68,18 +68,18 @@ const v_ba = { ...b, ...a }; > : ^^^^^ ^^^ >{ ...b, ...a } : { x: string | number; } > : ^^^^^ ^^^ ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: string | number; } > : ^^^^^ ^^^ const v_bc = { ...b, ...c }; ->v_bc : { x?: string | number; } -> : ^^^^^^ ^^^ ->{ ...b, ...c } : { x?: string | number; } -> : ^^^^^^ ^^^ ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>v_bc : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>{ ...b, ...c } : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c : { x?: string | number | undefined; } > : ^^^^^^ ^^^ @@ -100,8 +100,8 @@ const v_cb = { ...c, ...b }; > : ^^^^^^ ^^^ >c : { x?: string | number | undefined; } > : ^^^^^^ ^^^ ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const v_abc = { ...a, ...b, ...c }; >v_abc : { x: string | number; } @@ -110,8 +110,8 @@ const v_abc = { ...a, ...b, ...c }; > : ^^^^^ ^^^ >a : { x: string | number; } > : ^^^^^ ^^^ ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c : { x?: string | number | undefined; } > : ^^^^^^ ^^^ @@ -124,16 +124,16 @@ const v_acb = { ...a, ...c, ...b }; > : ^^^^^ ^^^ >c : { x?: string | number | undefined; } > : ^^^^^^ ^^^ ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const v_bac = { ...b, ...a, ...c }; >v_bac : { x: string | number; } > : ^^^^^ ^^^ >{ ...b, ...a, ...c } : { x: string | number; } > : ^^^^^ ^^^ ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: string | number; } > : ^^^^^ ^^^ >c : { x?: string | number | undefined; } @@ -144,8 +144,8 @@ const v_bca = { ...b, ...c, ...a }; > : ^^^^^ ^^^ >{ ...b, ...c, ...a } : { x: string | number; } > : ^^^^^ ^^^ ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >c : { x?: string | number | undefined; } > : ^^^^^^ ^^^ >a : { x: string | number; } @@ -160,8 +160,8 @@ const v_cab = { ...c, ...a, ...b }; > : ^^^^^^ ^^^ >a : { x: string | number; } > : ^^^^^ ^^^ ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ const v_cba = { ...c, ...b, ...a }; >v_cba : { x: string | number; } @@ -170,8 +170,8 @@ const v_cba = { ...c, ...b, ...a }; > : ^^^^^ ^^^ >c : { x?: string | number | undefined; } > : ^^^^^^ ^^^ ->b : { x?: string | number; } -> : ^^^^^^ ^^^ +>b : { x?: string | number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : { x: string | number; } > : ^^^^^ ^^^ diff --git a/tests/baselines/reference/spreadOverwritesProperty.types b/tests/baselines/reference/spreadOverwritesProperty.types index 436e2242f53d6..19d34980c08d1 100644 --- a/tests/baselines/reference/spreadOverwritesProperty.types +++ b/tests/baselines/reference/spreadOverwritesProperty.types @@ -11,8 +11,8 @@ declare var ab: { a: number, b: number }; > : ^^^^^^ declare var abq: { a: number, b?: number }; ->abq : { a: number; b?: number; } -> : ^^^^^ ^^^^^^ ^^^ +>abq : { a: number; b?: number | undefined; } +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number > : ^^^^^^ >b : number | undefined @@ -49,8 +49,8 @@ var unused3 = { b: 1, ...abq } > : ^^^^^^ >1 : 1 > : ^ ->abq : { a: number; b?: number; } -> : ^^^^^ ^^^^^^ ^^^ +>abq : { a: number; b?: number | undefined; } +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ function g(obj: { x: number | undefined }) { >g : (obj: { x: number | undefined; }) => { x: number | undefined; } diff --git a/tests/baselines/reference/stripMembersOptionality(exactoptionalpropertytypes=false).types b/tests/baselines/reference/stripMembersOptionality(exactoptionalpropertytypes=false).types index f9ec5d0a58c8c..fa20ff20f9f72 100644 --- a/tests/baselines/reference/stripMembersOptionality(exactoptionalpropertytypes=false).types +++ b/tests/baselines/reference/stripMembersOptionality(exactoptionalpropertytypes=false).types @@ -27,8 +27,8 @@ someVal.fn(""); > : ^^ declare const someVal2: Required<{ ->someVal2 : Required<{ fn?: (key: string) => string | null; }> -> : ^^^^^^^^^^^^^^^^ ^^^^ +>someVal2 : Required<{ fn?: ((key: string) => string | null) | undefined; }> +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^ fn?: (key: string) => string | null; >fn : ((key: string) => string | null) | undefined @@ -42,8 +42,8 @@ someVal2.fn(""); > : ^^^^^^^^^^^^^ >someVal2.fn : (key: string) => string | null > : ^ ^^ ^^^^^ ->someVal2 : Required<{ fn?: (key: string) => string | null; }> -> : ^^^^^^^^^^^^^^^^ ^^^^ +>someVal2 : Required<{ fn?: ((key: string) => string | null) | undefined; }> +> : ^^^^^^^^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^^ >fn : (key: string) => string | null > : ^ ^^ ^^^^^ >"" : "" diff --git a/tests/baselines/reference/subtypingWithObjectMembersOptionality2.types b/tests/baselines/reference/subtypingWithObjectMembersOptionality2.types index b7fd608f1c5af..160b25cdde565 100644 --- a/tests/baselines/reference/subtypingWithObjectMembersOptionality2.types +++ b/tests/baselines/reference/subtypingWithObjectMembersOptionality2.types @@ -55,20 +55,20 @@ declare var a: { Foo: Base; } > : ^^^^ declare var b: { Foo?: Derived; } ->b : { Foo?: Derived; } -> : ^^^^^^^^ ^^^ +>b : { Foo?: Derived | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Foo : Derived | undefined > : ^^^^^^^^^^^^^^^^^^^ var r = true ? a : b; // ok ->r : { Foo: Base; } | { Foo?: Derived; } -> : ^^^^^^^ ^^^^^^^^^^^^^^ ^^^ ->true ? a : b : { Foo: Base; } | { Foo?: Derived; } -> : ^^^^^^^ ^^^^^^^^^^^^^^ ^^^ +>r : { Foo: Base; } | { Foo?: Derived | undefined; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>true ? a : b : { Foo: Base; } | { Foo?: Derived | undefined; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ >a : { Foo: Base; } > : ^^^^^^^ ^^^ ->b : { Foo?: Derived; } -> : ^^^^^^^^ ^^^ +>b : { Foo?: Derived | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/subtypingWithObjectMembersOptionality3.types b/tests/baselines/reference/subtypingWithObjectMembersOptionality3.types index 3f3c6cb7ebf8a..559be0bd4eb5a 100644 --- a/tests/baselines/reference/subtypingWithObjectMembersOptionality3.types +++ b/tests/baselines/reference/subtypingWithObjectMembersOptionality3.types @@ -49,8 +49,8 @@ interface S3 extends T3 { // object literal case var a: { Foo?: Base; } ->a : { Foo?: Base; } -> : ^^^^^^^^ ^^^ +>a : { Foo?: Base | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Foo : Base | undefined > : ^^^^^^^^^^^^^^^^ @@ -61,14 +61,14 @@ var b: { Foo2: Derived; } > : ^^^^^^^ var r = true ? a : b; // ok ->r : { Foo?: Base; } | { Foo2: Derived; } -> : ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^ ->true ? a : b : { Foo?: Base; } | { Foo2: Derived; } -> : ^^^^^^^^ ^^^^^^^^^^^^^^ ^^^ +>r : { Foo?: Base | undefined; } | { Foo2: Derived; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>true ? a : b : { Foo?: Base | undefined; } | { Foo2: Derived; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >true : true > : ^^^^ ->a : { Foo?: Base; } -> : ^^^^^^^^ ^^^ +>a : { Foo?: Base | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { Foo2: Derived; } > : ^^^^^^^^ ^^^ diff --git a/tests/baselines/reference/subtypingWithObjectMembersOptionality4.types b/tests/baselines/reference/subtypingWithObjectMembersOptionality4.types index b471b1bbf0201..8ab4e1164b741 100644 --- a/tests/baselines/reference/subtypingWithObjectMembersOptionality4.types +++ b/tests/baselines/reference/subtypingWithObjectMembersOptionality4.types @@ -55,20 +55,20 @@ var a: { Foo: Base; } > : ^^^^ var b: { Foo2?: Derived; } ->b : { Foo2?: Derived; } -> : ^^^^^^^^^ ^^^ +>b : { Foo2?: Derived | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Foo2 : Derived | undefined > : ^^^^^^^^^^^^^^^^^^^ var r = true ? a : b; // ok ->r : { Foo: Base; } | { Foo2?: Derived; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^ ->true ? a : b : { Foo: Base; } | { Foo2?: Derived; } -> : ^^^^^^^ ^^^^^^^^^^^^^^^ ^^^ +>r : { Foo: Base; } | { Foo2?: Derived | undefined; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>true ? a : b : { Foo: Base; } | { Foo2?: Derived | undefined; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >true : true > : ^^^^ >a : { Foo: Base; } > : ^^^^^^^ ^^^ ->b : { Foo2?: Derived; } -> : ^^^^^^^^^ ^^^ +>b : { Foo2?: Derived | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/subtypingWithOptionalProperties.errors.txt b/tests/baselines/reference/subtypingWithOptionalProperties.errors.txt index 7f394685af724..5286910d7f1ca 100644 --- a/tests/baselines/reference/subtypingWithOptionalProperties.errors.txt +++ b/tests/baselines/reference/subtypingWithOptionalProperties.errors.txt @@ -9,7 +9,7 @@ subtypingWithOptionalProperties.ts(5,9): error TS2322: Type 'T' is not assignabl var b: { s?: number } = a; ~ !!! error TS2322: Type 'T' is not assignable to type '{ s?: number | undefined; }'. -!!! related TS2208 subtypingWithOptionalProperties.ts:4:12: This type parameter might need an `extends { s?: number; }` constraint. +!!! related TS2208 subtypingWithOptionalProperties.ts:4:12: This type parameter might need an `extends { s?: number | undefined; }` constraint. return b; } diff --git a/tests/baselines/reference/subtypingWithOptionalProperties.types b/tests/baselines/reference/subtypingWithOptionalProperties.types index 57a4f901e19c7..6280da1387de9 100644 --- a/tests/baselines/reference/subtypingWithOptionalProperties.types +++ b/tests/baselines/reference/subtypingWithOptionalProperties.types @@ -5,31 +5,31 @@ // returns { s?: number; } function f(a: T) { ->f : (a: T) => { s?: number; } -> : ^ ^^ ^^ ^^^^^^^^^^^ ^^^ +>f : (a: T) => { s?: number | undefined; } +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : T > : ^ var b: { s?: number } = a; ->b : { s?: number; } -> : ^^^^^^ ^^^ +>b : { s?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : number | undefined > : ^^^^^^^^^^^^^^^^^^ >a : T > : ^ return b; ->b : { s?: number; } -> : ^^^^^^ ^^^ +>b : { s?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ } var r = f({ s: new Object() }); // ok ->r : { s?: number; } -> : ^^^^^^ ^^^ ->f({ s: new Object() }) : { s?: number; } -> : ^^^^^^ ^^^ ->f : (a: T) => { s?: number; } -> : ^ ^^ ^^ ^^^^^^^^^^^ ^^^ +>r : { s?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f({ s: new Object() }) : { s?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>f : (a: T) => { s?: number | undefined; } +> : ^ ^^ ^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ s: new Object() } : { s: Object; } > : ^^^^^^^^^^^^^^ >s : Object @@ -44,8 +44,8 @@ r.s && r.s.toFixed(); // would blow up at runtime > : ^^^^^^^^^^^^^^^^^^^^^^ >r.s : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->r : { s?: number; } -> : ^^^^^^ ^^^ +>r : { s?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : number | undefined > : ^^^^^^^^^^^^^^^^^^ >r.s.toFixed() : string @@ -54,8 +54,8 @@ r.s && r.s.toFixed(); // would blow up at runtime > : ^ ^^^ ^^^^^ >r.s : number > : ^^^^^^ ->r : { s?: number; } -> : ^^^^^^ ^^^ +>r : { s?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >s : number > : ^^^^^^ >toFixed : (fractionDigits?: number) => string diff --git a/tests/baselines/reference/thisTypeSyntacticContext.types b/tests/baselines/reference/thisTypeSyntacticContext.types index 1a1d23902bcc2..d4a69956f5049 100644 --- a/tests/baselines/reference/thisTypeSyntacticContext.types +++ b/tests/baselines/reference/thisTypeSyntacticContext.types @@ -11,8 +11,8 @@ function f(this: { n: number }) { } const o: { n: number, test?: (this: { n: number }) => void } = { n: 1 } ->o : { n: number; test?: (this: { n: number; }) => void; } -> : ^^^^^ ^^^^^^^^^ ^^^ +>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +> : ^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >n : number > : ^^^^^^ >test : ((this: { n: number; }) => void) | undefined @@ -33,8 +33,8 @@ o.test = f > : ^ ^^ ^^^^^^^^^ >o.test : ((this: { n: number; }) => void) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ ->o : { n: number; test?: (this: { n: number; }) => void; } -> : ^^^^^ ^^^^^^^^^ ^^^ +>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +> : ^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >test : ((this: { n: number; }) => void) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >f : (this: { n: number; }) => void @@ -45,8 +45,8 @@ o.test(); > : ^^^^ >o.test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ ->o : { n: number; test?: (this: { n: number; }) => void; } -> : ^^^^^ ^^^^^^^^^ ^^^ +>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +> : ^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ @@ -55,10 +55,10 @@ o!.test(); > : ^^^^ >o!.test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ ->o! : { n: number; test?: (this: { n: number; }) => void; } -> : ^^^^^ ^^^^^^^^^ ^^^ ->o : { n: number; test?: (this: { n: number; }) => void; } -> : ^^^^^ ^^^^^^^^^ ^^^ +>o! : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +> : ^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ +>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +> : ^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ @@ -69,8 +69,8 @@ o.test!(); > : ^ ^^ ^^^^^ >o.test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ ->o : { n: number; test?: (this: { n: number; }) => void; } -> : ^^^^^ ^^^^^^^^^ ^^^ +>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +> : ^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ @@ -85,8 +85,8 @@ o.test!!!(); > : ^ ^^ ^^^^^ >o.test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ ->o : { n: number; test?: (this: { n: number; }) => void; } -> : ^^^^^ ^^^^^^^^^ ^^^ +>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +> : ^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ @@ -99,8 +99,8 @@ o.test!!!(); > : ^ ^^ ^^^^^ >o.test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ ->o : { n: number; test?: (this: { n: number; }) => void; } -> : ^^^^^ ^^^^^^^^^ ^^^ +>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +> : ^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ @@ -111,8 +111,8 @@ o.test!!!(); > : ^ ^^ ^^^^^ >o.test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ ->o : { n: number; test?: (this: { n: number; }) => void; } -> : ^^^^^ ^^^^^^^^^ ^^^ +>o : { n: number; test?: ((this: { n: number; }) => void) | undefined; } +> : ^^^^^ ^^^^^^^^^^^ ^^ ^^^^^ ^^^^^^^^^^^^^^^^ >test : (this: { n: number; }) => void > : ^ ^^ ^^^^^ diff --git a/tests/baselines/reference/tsxAttributeErrors.types b/tests/baselines/reference/tsxAttributeErrors.types index e2e2ef0ce37b1..9f6960360fbc7 100644 --- a/tests/baselines/reference/tsxAttributeErrors.types +++ b/tests/baselines/reference/tsxAttributeErrors.types @@ -5,8 +5,8 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { div: { ->div : { text?: string; width?: number; } -> : ^^^^^^^^^ ^^^^^^^^^^ ^^^ +>div : { text?: string | undefined; width?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ text?: string; >text : string | undefined diff --git a/tests/baselines/reference/tsxAttributeInvalidNames.types b/tests/baselines/reference/tsxAttributeInvalidNames.types index 53c7b9fe13a97..8781475e0b43d 100644 --- a/tests/baselines/reference/tsxAttributeInvalidNames.types +++ b/tests/baselines/reference/tsxAttributeInvalidNames.types @@ -5,14 +5,14 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { test1: { "data-foo"?: string }; ->test1 : { "data-foo"?: string; } -> : ^^^^^^^^^^^^^^^ ^^^ +>test1 : { "data-foo"?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"data-foo" : string | undefined > : ^^^^^^^^^^^^^^^^^^ test2: { "data-foo"?: string }; ->test2 : { "data-foo"?: string; } -> : ^^^^^^^^^^^^^^^ ^^^ +>test2 : { "data-foo"?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"data-foo" : string | undefined > : ^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/tsxAttributeResolution11.types b/tests/baselines/reference/tsxAttributeResolution11.types index b61e859800fcf..c8e06028335f1 100644 --- a/tests/baselines/reference/tsxAttributeResolution11.types +++ b/tests/baselines/reference/tsxAttributeResolution11.types @@ -28,8 +28,8 @@ class MyComponent { } props: { ->props : { ref?: string; } -> : ^^^^^^^^ ^^^ +>props : { ref?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ref?: string; >ref : string | undefined diff --git a/tests/baselines/reference/tsxAttributeResolution6.types b/tests/baselines/reference/tsxAttributeResolution6.types index 2ba9a6639feba..c08283e3bc861 100644 --- a/tests/baselines/reference/tsxAttributeResolution6.types +++ b/tests/baselines/reference/tsxAttributeResolution6.types @@ -5,8 +5,8 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { test1: { n?: boolean; s?: string}; ->test1 : { n?: boolean; s?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>test1 : { n?: boolean | undefined; s?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >n : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ >s : string | undefined diff --git a/tests/baselines/reference/tsxAttributeResolution7.types b/tests/baselines/reference/tsxAttributeResolution7.types index 79380cbedd79a..d610a34513b45 100644 --- a/tests/baselines/reference/tsxAttributeResolution7.types +++ b/tests/baselines/reference/tsxAttributeResolution7.types @@ -5,8 +5,8 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { test1: { "data-foo"?: string }; ->test1 : { "data-foo"?: string; } -> : ^^^^^^^^^^^^^^^ ^^^ +>test1 : { "data-foo"?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"data-foo" : string | undefined > : ^^^^^^^^^^^^^^^^^^ } diff --git a/tests/baselines/reference/tsxFindAllReferences1.baseline.jsonc b/tests/baselines/reference/tsxFindAllReferences1.baseline.jsonc index c58fc401d0c26..e094161bb0b79 100644 --- a/tests/baselines/reference/tsxFindAllReferences1.baseline.jsonc +++ b/tests/baselines/reference/tsxFindAllReferences1.baseline.jsonc @@ -32,7 +32,7 @@ "containerKind": "", "containerName": "", "kind": "property", - "name": "(property) JSX.IntrinsicElements.div: {\n name?: string;\n isOpen?: boolean;\n}", + "name": "(property) JSX.IntrinsicElements.div: {\n name?: string | undefined;\n isOpen?: boolean | undefined;\n}", "displayParts": [ { "text": "(", @@ -110,6 +110,22 @@ "text": "string", "kind": "keyword" }, + { + "text": " ", + "kind": "space" + }, + { + "text": "|", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "undefined", + "kind": "keyword" + }, { "text": ";", "kind": "punctuation" @@ -142,6 +158,22 @@ "text": "boolean", "kind": "keyword" }, + { + "text": " ", + "kind": "space" + }, + { + "text": "|", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "undefined", + "kind": "keyword" + }, { "text": ";", "kind": "punctuation" @@ -204,7 +236,7 @@ "containerKind": "", "containerName": "", "kind": "property", - "name": "(property) JSX.IntrinsicElements.div: {\n name?: string;\n isOpen?: boolean;\n}", + "name": "(property) JSX.IntrinsicElements.div: {\n name?: string | undefined;\n isOpen?: boolean | undefined;\n}", "displayParts": [ { "text": "(", @@ -282,6 +314,22 @@ "text": "string", "kind": "keyword" }, + { + "text": " ", + "kind": "space" + }, + { + "text": "|", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "undefined", + "kind": "keyword" + }, { "text": ";", "kind": "punctuation" @@ -314,6 +362,22 @@ "text": "boolean", "kind": "keyword" }, + { + "text": " ", + "kind": "space" + }, + { + "text": "|", + "kind": "punctuation" + }, + { + "text": " ", + "kind": "space" + }, + { + "text": "undefined", + "kind": "keyword" + }, { "text": ";", "kind": "punctuation" diff --git a/tests/baselines/reference/tsxGenericAttributesType1.types b/tests/baselines/reference/tsxGenericAttributesType1.types index 586a0057d53a9..f012410c9f6be 100644 --- a/tests/baselines/reference/tsxGenericAttributesType1.types +++ b/tests/baselines/reference/tsxGenericAttributesType1.types @@ -20,16 +20,16 @@ const decorator = function (Component: React.StatelessComponent): React.St > : ^^^ return (props) => ->(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->props : T & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : T & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > : JSX.Element > : ^^^^^^^^^^^ >Component : React.StatelessComponent > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->props : T & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : T & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Component : React.StatelessComponent > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ @@ -50,16 +50,16 @@ const decorator2 = function (Component: React.Stateless > : ^^^ return (props) => ->(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->props : T & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : T & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > : JSX.Element > : ^^^^^^^^^^^ >Component : React.StatelessComponent > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->props : T & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : T & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number > : ^^^^^^ >2 : 2 @@ -86,10 +86,10 @@ const decorator3 = function ( > : ^^^ return (props) => ->(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->props : T & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : T & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > : JSX.Element > : ^^^^^^^^^^^ >Component : React.StatelessComponent @@ -98,8 +98,8 @@ const decorator3 = function ( > : ^^^^^^ >2 : 2 > : ^ ->props : T & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : T & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >Component : React.StatelessComponent > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/tsxGenericAttributesType2.types b/tests/baselines/reference/tsxGenericAttributesType2.types index 3e54063a3624c..176baf37bae05 100644 --- a/tests/baselines/reference/tsxGenericAttributesType2.types +++ b/tests/baselines/reference/tsxGenericAttributesType2.types @@ -22,16 +22,16 @@ const decorator4 = function (Component: React.Stateless > : ^^^ return (props) => ->(props) => : (props: T & { children?: React.ReactNode; }) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->props : T & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(props) => : (props: T & { children?: React.ReactNode | undefined; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : T & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > : JSX.Element > : ^^^^^^^^^^^ >Component : React.StatelessComponent > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->props : T & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : T & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y : string > : ^^^^^^ >"blah" : "blah" diff --git a/tests/baselines/reference/tsxGenericAttributesType3.types b/tests/baselines/reference/tsxGenericAttributesType3.types index 3399a76bcfbdf..71466897a9b10 100644 --- a/tests/baselines/reference/tsxGenericAttributesType3.types +++ b/tests/baselines/reference/tsxGenericAttributesType3.types @@ -53,12 +53,12 @@ class B extends React.Component { > : ^^^^^^^^^^^ >B1 : typeof B1 > : ^^^^^^^^^ ->this.props : U & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.props : U & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : U & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : U & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ } diff --git a/tests/baselines/reference/tsxGenericAttributesType4.types b/tests/baselines/reference/tsxGenericAttributesType4.types index 4fcf64a9c36f3..682491d1f9f1c 100644 --- a/tests/baselines/reference/tsxGenericAttributesType4.types +++ b/tests/baselines/reference/tsxGenericAttributesType4.types @@ -51,12 +51,12 @@ class B extends React.Component { > : ^^^^^^^^^^^ >B1 : typeof B1 > : ^^^^^^^^^ ->this.props : U & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.props : U & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : U & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : U & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : string > : ^^^^^^ } diff --git a/tests/baselines/reference/tsxGenericAttributesType5.errors.txt b/tests/baselines/reference/tsxGenericAttributesType5.errors.txt index 33aee5593ae1a..166ccaa120157 100644 --- a/tests/baselines/reference/tsxGenericAttributesType5.errors.txt +++ b/tests/baselines/reference/tsxGenericAttributesType5.errors.txt @@ -20,7 +20,7 @@ file.tsx(11,5): error TS2564: Property 'props' has no initializer and is not def !!! error TS2416: Property 'props' in type 'B' is not assignable to the same property in base type 'Component'. !!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. !!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. -!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: React.ReactNode; }` constraint. +!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: React.ReactNode | undefined; }` constraint. ~~~~~ !!! error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. render() { diff --git a/tests/baselines/reference/tsxGenericAttributesType6.errors.txt b/tests/baselines/reference/tsxGenericAttributesType6.errors.txt index 53b37ea0945e5..517996db58ae7 100644 --- a/tests/baselines/reference/tsxGenericAttributesType6.errors.txt +++ b/tests/baselines/reference/tsxGenericAttributesType6.errors.txt @@ -20,7 +20,7 @@ file.tsx(11,5): error TS2564: Property 'props' has no initializer and is not def !!! error TS2416: Property 'props' in type 'B' is not assignable to the same property in base type 'Component'. !!! error TS2416: Type 'U' is not assignable to type 'U & { children?: ReactNode | undefined; }'. !!! error TS2416: Type 'U' is not assignable to type '{ children?: ReactNode | undefined; }'. -!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: React.ReactNode; }` constraint. +!!! related TS2208 file.tsx:10:9: This type parameter might need an `extends { children?: React.ReactNode | undefined; }` constraint. ~~~~~ !!! error TS2564: Property 'props' has no initializer and is not definitely assigned in the constructor. render() { diff --git a/tests/baselines/reference/tsxGenericAttributesType9.types b/tests/baselines/reference/tsxGenericAttributesType9.types index f0833d28c5d86..2de05c027fa45 100644 --- a/tests/baselines/reference/tsxGenericAttributesType9.types +++ b/tests/baselines/reference/tsxGenericAttributesType9.types @@ -40,12 +40,12 @@ export function makeP

(Ctor: React.ComponentClass

) { > : ^^^^^^^^^^^ >Ctor : React.ComponentClass

> : ^^^^^^^^^^^^^^^^^^^^^^^ ->this.props : P & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.props : P & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : P & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : P & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ); } diff --git a/tests/baselines/reference/tsxInArrowFunction.types b/tests/baselines/reference/tsxInArrowFunction.types index 1967dff34320c..914ade9d347d6 100644 --- a/tests/baselines/reference/tsxInArrowFunction.types +++ b/tests/baselines/reference/tsxInArrowFunction.types @@ -5,8 +5,8 @@ declare namespace JSX { interface Element { } interface IntrinsicElements { div: { ->div : { text?: string; } -> : ^^^^^^^^^ ^^^ +>div : { text?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ text?: string; >text : string | undefined diff --git a/tests/baselines/reference/tsxIntrinsicAttributeErrors.types b/tests/baselines/reference/tsxIntrinsicAttributeErrors.types index 8773c90750be0..781473f4d2a77 100644 --- a/tests/baselines/reference/tsxIntrinsicAttributeErrors.types +++ b/tests/baselines/reference/tsxIntrinsicAttributeErrors.types @@ -20,8 +20,8 @@ declare namespace JSX { } interface IntrinsicElements { div: { ->div : { text?: string; width?: number; } -> : ^^^^^^^^^ ^^^^^^^^^^ ^^^ +>div : { text?: string | undefined; width?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ text?: string; >text : string | undefined diff --git a/tests/baselines/reference/tsxInvokeComponentType.types b/tests/baselines/reference/tsxInvokeComponentType.types index 17efa7d6c9f68..6b920ea8acb3c 100644 --- a/tests/baselines/reference/tsxInvokeComponentType.types +++ b/tests/baselines/reference/tsxInvokeComponentType.types @@ -39,8 +39,8 @@ const good = ; > : ^^^^^^ declare const Elem2: ComponentType<{ opt?: number }>; ->Elem2 : React.ComponentType<{ opt?: number; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ +>Elem2 : React.ComponentType<{ opt?: number | undefined; }> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >opt : number | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -49,8 +49,8 @@ const alsoOk = text; > : ^^^^^^^^^^^ >text : JSX.Element > : ^^^^^^^^^^^ ->Elem2 : React.ComponentType<{ opt?: number; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ ->Elem2 : React.ComponentType<{ opt?: number; }> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^ +>Elem2 : React.ComponentType<{ opt?: number | undefined; }> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>Elem2 : React.ComponentType<{ opt?: number | undefined; }> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/tsxSfcReturnNull.types b/tests/baselines/reference/tsxSfcReturnNull.types index 650bdcd0311e0..92683faa402c4 100644 --- a/tests/baselines/reference/tsxSfcReturnNull.types +++ b/tests/baselines/reference/tsxSfcReturnNull.types @@ -18,8 +18,8 @@ const Foo = (props: any) => null; function Greet(x: {name?: string}) { >Greet : (x: { name?: string; }) => null > : ^ ^^ ^^^^^^^^^ ->x : { name?: string; } -> : ^^^^^^^^^ ^^^ +>x : { name?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >name : string | undefined > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/tsxSfcReturnNullStrictNullChecks.types b/tests/baselines/reference/tsxSfcReturnNullStrictNullChecks.types index 91bf14d3898b8..43fe6a64f6093 100644 --- a/tests/baselines/reference/tsxSfcReturnNullStrictNullChecks.types +++ b/tests/baselines/reference/tsxSfcReturnNullStrictNullChecks.types @@ -18,8 +18,8 @@ const Foo = (props: any) => null; function Greet(x: {name?: string}) { >Greet : (x: { name?: string; }) => null > : ^ ^^ ^^^^^^^^^ ->x : { name?: string; } -> : ^^^^^^^^^ ^^^ +>x : { name?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >name : string | undefined > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/tsxSfcReturnUndefinedStrictNullChecks.types b/tests/baselines/reference/tsxSfcReturnUndefinedStrictNullChecks.types index e4a8da3a3a2c3..b61e053d8c6fb 100644 --- a/tests/baselines/reference/tsxSfcReturnUndefinedStrictNullChecks.types +++ b/tests/baselines/reference/tsxSfcReturnUndefinedStrictNullChecks.types @@ -20,8 +20,8 @@ const Foo = (props: any) => undefined; function Greet(x: {name?: string}) { >Greet : (x: { name?: string; }) => undefined > : ^ ^^ ^^^^^^^^^^^^^^ ->x : { name?: string; } -> : ^^^^^^^^^ ^^^ +>x : { name?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >name : string | undefined > : ^^^^^^^^^^^^^^^^^^ diff --git a/tests/baselines/reference/tsxStatelessFunctionComponentOverload1.types b/tests/baselines/reference/tsxStatelessFunctionComponentOverload1.types index f50bc1229310d..651b1909bdd73 100644 --- a/tests/baselines/reference/tsxStatelessFunctionComponentOverload1.types +++ b/tests/baselines/reference/tsxStatelessFunctionComponentOverload1.types @@ -142,8 +142,8 @@ declare function TestingOneThing({y1: string}): JSX.Element; declare function TestingOneThing(j: {"extra-data": string, yy?: string}): JSX.Element; >TestingOneThing : { ({ y1: string }: { y1: any; }): JSX.Element; (j: { "extra-data": string; yy?: string; }): JSX.Element; (n: { yy: number; direction?: number; }): JSX.Element; (n: { yy: string; name: string; }): JSX.Element; } > : ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->j : { "extra-data": string; yy?: string; } -> : ^^^^^^^^^^^^^^^^ ^^^^^^^ ^^^ +>j : { "extra-data": string; yy?: string | undefined; } +> : ^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >"extra-data" : string > : ^^^^^^ >yy : string | undefined @@ -154,8 +154,8 @@ declare function TestingOneThing(j: {"extra-data": string, yy?: string}): JSX.El declare function TestingOneThing(n: {yy: number, direction?: number}): JSX.Element; >TestingOneThing : { ({ y1: string }: { y1: any; }): JSX.Element; (j: { "extra-data": string; yy?: string; }): JSX.Element; (n: { yy: number; direction?: number; }): JSX.Element; (n: { yy: string; name: string; }): JSX.Element; } > : ^^^ ^^^^^^^^^^^^^^^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->n : { yy: number; direction?: number; } -> : ^^^^^^ ^^^^^^^^^^^^^^ ^^^ +>n : { yy: number; direction?: number | undefined; } +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >yy : number > : ^^^^^^ >direction : number | undefined @@ -246,8 +246,8 @@ const d5 = ; declare function TestingOptional(a: {y1?: string, y2?: number}): JSX.Element; >TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->a : { y1?: string; y2?: number; } -> : ^^^^^^^ ^^^^^^^ ^^^ +>a : { y1?: string | undefined; y2?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y1 : string | undefined > : ^^^^^^^^^^^^^^^^^^ >y2 : number | undefined @@ -258,8 +258,8 @@ declare function TestingOptional(a: {y1?: string, y2?: number}): JSX.Element; declare function TestingOptional(a: {y1: boolean, y2?: number, y3: boolean}): JSX.Element; >TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->a : { y1: boolean; y2?: number; y3: boolean; } -> : ^^^^^^ ^^^^^^^ ^^^^^^ ^^^ +>a : { y1: boolean; y2?: number | undefined; y3: boolean; } +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >y1 : boolean > : ^^^^^^^ >y2 : number | undefined diff --git a/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.types b/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.types index d990595afcbb4..8aef1051a737e 100644 --- a/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.types +++ b/tests/baselines/reference/tsxStatelessFunctionComponentOverload4.types @@ -169,8 +169,8 @@ declare function TestingOneThing(j: {"extra-data": string}): JSX.Element; declare function TestingOneThing(n: {yy: string, direction?: number}): JSX.Element; >TestingOneThing : { (j: { "extra-data": string; }): JSX.Element; (n: { yy: string; direction?: number; }): JSX.Element; } > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->n : { yy: string; direction?: number; } -> : ^^^^^^ ^^^^^^^^^^^^^^ ^^^ +>n : { yy: string; direction?: number | undefined; } +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >yy : string > : ^^^^^^ >direction : number | undefined @@ -204,8 +204,8 @@ const d2 = declare function TestingOptional(a: {y1?: string, y2?: number}): JSX.Element; >TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->a : { y1?: string; y2?: number; } -> : ^^^^^^^ ^^^^^^^ ^^^ +>a : { y1?: string | undefined; y2?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >y1 : string | undefined > : ^^^^^^^^^^^^^^^^^^ >y2 : number | undefined @@ -216,8 +216,8 @@ declare function TestingOptional(a: {y1?: string, y2?: number}): JSX.Element; declare function TestingOptional(a: {y1?: string, y2?: number, children: JSX.Element}): JSX.Element; >TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->a : { y1?: string; y2?: number; children: JSX.Element; } -> : ^^^^^^^ ^^^^^^^ ^^^^^^^^^^^^ ^^^ +>a : { y1?: string | undefined; y2?: number | undefined; children: JSX.Element; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >y1 : string | undefined > : ^^^^^^^^^^^^^^^^^^ >y2 : number | undefined @@ -232,8 +232,8 @@ declare function TestingOptional(a: {y1?: string, y2?: number, children: JSX.Ele declare function TestingOptional(a: {y1: boolean, y2?: number, y3: boolean}): JSX.Element; >TestingOptional : { (a: { y1?: string; y2?: number; }): JSX.Element; (a: { y1?: string; y2?: number; children: JSX.Element; }): JSX.Element; (a: { y1: boolean; y2?: number; y3: boolean; }): JSX.Element; } > : ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ^^ ^^^ ^^^ ->a : { y1: boolean; y2?: number; y3: boolean; } -> : ^^^^^^ ^^^^^^^ ^^^^^^ ^^^ +>a : { y1: boolean; y2?: number | undefined; y3: boolean; } +> : ^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >y1 : boolean > : ^^^^^^^ >y2 : number | undefined diff --git a/tests/baselines/reference/tsxStatelessFunctionComponents2.types b/tests/baselines/reference/tsxStatelessFunctionComponents2.types index 585c866f8856e..a4aa3006a02ec 100644 --- a/tests/baselines/reference/tsxStatelessFunctionComponents2.types +++ b/tests/baselines/reference/tsxStatelessFunctionComponents2.types @@ -10,8 +10,8 @@ import React = require('react'); function Greet(x: {name?: string}) { >Greet : (x: { name?: string; }) => JSX.Element > : ^ ^^ ^^^^^^^^^^^^^^^^ ->x : { name?: string; } -> : ^^^^^^^^^ ^^^ +>x : { name?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >name : string | undefined > : ^^^^^^^^^^^^^^^^^^ @@ -20,8 +20,8 @@ function Greet(x: {name?: string}) { > : ^^^^^^^^^^^ >div : any > : ^^^ ->x : { name?: string; } -> : ^^^^^^^^^ ^^^ +>x : { name?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >div : any > : ^^^ } @@ -29,8 +29,8 @@ function Greet(x: {name?: string}) { class BigGreeter extends React.Component<{ name?: string }, {}> { >BigGreeter : BigGreeter > : ^^^^^^^^^^ ->React.Component : React.Component<{ name?: string; }, {}> -> : ^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^ +>React.Component : React.Component<{ name?: string | undefined; }, {}> +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >React : typeof React > : ^^^^^^^^^^^^ >Component : typeof React.Component diff --git a/tests/baselines/reference/tsxStatelessFunctionComponents3.types b/tests/baselines/reference/tsxStatelessFunctionComponents3.types index 766083c989446..15648209e75f2 100644 --- a/tests/baselines/reference/tsxStatelessFunctionComponents3.types +++ b/tests/baselines/reference/tsxStatelessFunctionComponents3.types @@ -35,10 +35,10 @@ var MainMenu: React.StatelessComponent<{}> = (props) => (

> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >React : any > : ^^^ ->(props) => (

Main Menu

) : (props: { children?: React.ReactNode; }) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->props : { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>(props) => (

Main Menu

) : (props: { children?: React.ReactNode | undefined; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >(

Main Menu

) : JSX.Element > : ^^^^^^^^^^^ >

Main Menu

: JSX.Element @@ -65,8 +65,8 @@ var App: React.StatelessComponent<{ children }> = ({children}) => ( > : ^^^ >children : any > : ^^^ ->({children}) => (
) : ({ children }: { children: any; } & { children?: React.ReactNode; }) => JSX.Element -> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>({children}) => (
) : ({ children }: { children: any; } & { children?: React.ReactNode | undefined; }) => JSX.Element +> : ^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >children : any > : ^^^ >(
) : JSX.Element diff --git a/tests/baselines/reference/tsxStatelessFunctionComponentsWithTypeArguments3.types b/tests/baselines/reference/tsxStatelessFunctionComponentsWithTypeArguments3.types index 95bd0cdfdc2a6..80a07166c342e 100644 --- a/tests/baselines/reference/tsxStatelessFunctionComponentsWithTypeArguments3.types +++ b/tests/baselines/reference/tsxStatelessFunctionComponentsWithTypeArguments3.types @@ -16,8 +16,8 @@ declare function OverloadComponent(): JSX.Element; declare function OverloadComponent(attr: {b: U, a?: string, "ignore-prop": boolean}): JSX.Element; >OverloadComponent : { (): JSX.Element; (attr: { b: U; a?: string; "ignore-prop": boolean; }): JSX.Element; (attr: { b: U_1; a: T; }): JSX.Element; } > : ^^^^^^^^^^^ ^^^ ^^ ^^ ^^^ ^^^ ^^^^^^^ ^^ ^^^ ^^^ ->attr : { b: U; a?: string; "ignore-prop": boolean; } -> : ^^^^^ ^^^^^^ ^^^^^^^^^^^^^^^^^ ^^^ +>attr : { b: U; a?: string | undefined; "ignore-prop": boolean; } +> : ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >b : U > : ^ >a : string | undefined diff --git a/tests/baselines/reference/tsxTypeErrors.types b/tests/baselines/reference/tsxTypeErrors.types index 3e2ae01dcf51e..6fe234b8c962c 100644 --- a/tests/baselines/reference/tsxTypeErrors.types +++ b/tests/baselines/reference/tsxTypeErrors.types @@ -63,8 +63,8 @@ class MyClass { > : ^^^^^^^ props: { ->props : { pt?: { x: number; y: number; }; name?: string; reqd: boolean; } -> : ^^^^^^^ ^^^^^^^^^ ^^^^^^^^ ^^^ +>props : { pt?: { x: number; y: number; } | undefined; name?: string | undefined; reqd: boolean; } +> : ^^^^^^^^^^^^ ^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ pt?: { x: number; y: number; }; >pt : { x: number; y: number; } | undefined diff --git a/tests/baselines/reference/tsxUnionMemberChecksFilterDataProps.types b/tests/baselines/reference/tsxUnionMemberChecksFilterDataProps.types index 0d58289a19d68..8a3e8e4de42ff 100644 --- a/tests/baselines/reference/tsxUnionMemberChecksFilterDataProps.types +++ b/tests/baselines/reference/tsxUnionMemberChecksFilterDataProps.types @@ -17,8 +17,8 @@ import React, { ReactElement } from "react"; declare function NotHappy(props: ({ fixed?: boolean } | { value?: number })): ReactElement; >NotHappy : (props: ({ fixed?: boolean; } | { value?: number; })) => ReactElement > : ^ ^^ ^^^^^ ->props : { fixed?: boolean; } | { value?: number; } -> : ^^^^^^^^^^ ^^^^^^^^^^^^^^^^ ^^^ +>props : { fixed?: boolean | undefined; } | { value?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fixed : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ >value : number | undefined @@ -27,8 +27,8 @@ declare function NotHappy(props: ({ fixed?: boolean } | { value?: number })): Re declare function Happy(props: { fixed?: boolean, value?: number }): ReactElement; >Happy : (props: { fixed?: boolean; value?: number; }) => ReactElement > : ^ ^^ ^^^^^ ->props : { fixed?: boolean; value?: number; } -> : ^^^^^^^^^^ ^^^^^^^^^^ ^^^ +>props : { fixed?: boolean | undefined; value?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >fixed : boolean | undefined > : ^^^^^^^^^^^^^^^^^^^ >value : number | undefined diff --git a/tests/baselines/reference/tsxUnionTypeComponent1.types b/tests/baselines/reference/tsxUnionTypeComponent1.types index 5c32b49abf43a..e1ed222695e13 100644 --- a/tests/baselines/reference/tsxUnionTypeComponent1.types +++ b/tests/baselines/reference/tsxUnionTypeComponent1.types @@ -34,12 +34,12 @@ class MyComponent extends React.Component { const { AnyComponent } = this.props; >AnyComponent : React.StatelessComponent | React.ComponentClass > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->this.props : ComponentProps & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.props : ComponentProps & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->props : ComponentProps & { children?: React.ReactNode; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>props : ComponentProps & { children?: React.ReactNode | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ return (); >() : JSX.Element diff --git a/tests/baselines/reference/typeArgumentInference.types b/tests/baselines/reference/typeArgumentInference.types index 217511ab6639e..08e02aae73ff9 100644 --- a/tests/baselines/reference/typeArgumentInference.types +++ b/tests/baselines/reference/typeArgumentInference.types @@ -551,10 +551,10 @@ var a9a: {}; > : ^^^^^^ var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); ->a9b : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ ->someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>a9b : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >someGenerics9 : (a: T, b: T, c: T) => T > : ^ ^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : number | undefined @@ -575,8 +575,8 @@ var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); > : ^^ var a9b: { a?: number; b?: string; }; ->a9b : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>a9b : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number | undefined > : ^^^^^^^^^^^^^^^^^^ >b : string | undefined diff --git a/tests/baselines/reference/typeArgumentInferenceWithConstraints.types b/tests/baselines/reference/typeArgumentInferenceWithConstraints.types index 036d693bc76fd..20a8b03bcd683 100644 --- a/tests/baselines/reference/typeArgumentInferenceWithConstraints.types +++ b/tests/baselines/reference/typeArgumentInferenceWithConstraints.types @@ -626,10 +626,10 @@ var a9a: {}; > : ^^^^^^ var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); ->a9b : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ ->someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>a9b : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null) : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >someGenerics9 : (a: T, b: T, c: T) => T > : ^ ^^^^^^^^^^^^^^^^^^ ^^ ^^ ^^ ^^ ^^ ^^^^^ >a : number | undefined @@ -650,8 +650,8 @@ var a9b = someGenerics9<{ a?: number; b?: string; }>({ a: 0 }, { b: '' }, null); > : ^^ var a9b: { a?: number; b?: string; }; ->a9b : { a?: number; b?: string; } -> : ^^^^^^ ^^^^^^ ^^^ +>a9b : { a?: number | undefined; b?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >a : number | undefined > : ^^^^^^^^^^^^^^^^^^ >b : string | undefined diff --git a/tests/baselines/reference/typeFromContextualThisType.types b/tests/baselines/reference/typeFromContextualThisType.types index 344254b73dbdc..f9df9d9ed6f6b 100644 --- a/tests/baselines/reference/typeFromContextualThisType.types +++ b/tests/baselines/reference/typeFromContextualThisType.types @@ -32,8 +32,8 @@ const o1 = { /** @type {{ d(): void; e?(n: number): number; f?(n: number): number; g?: number }} */ const o2 = { ->o2 : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } -> : ^^^^^^^ ^^^^^ ^^ ^^^ ^^^^^ ^^ ^^^ ^^^^^^ ^^^ +>o2 : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } +> : ^^^^^^^ ^^^^^ ^^ ^^^ ^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >{ d() { this.e = this.f = m => this.g || m; }} : { d(): void; } > : ^^^^^^^^^^^^^^ @@ -46,16 +46,16 @@ const o2 = { > : ^ ^^^^^^^^^^^^^^^^^^^ >this.e : ((n: number) => number) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ ->this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } -> : ^^^^^^^ ^^^^^ ^^ ^^^ ^^^^^ ^^ ^^^ ^^^^^^ ^^^ +>this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } +> : ^^^^^^^ ^^^^^ ^^ ^^^ ^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >e : ((n: number) => number) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >this.f = m => this.g || m : (m: number) => number > : ^ ^^^^^^^^^^^^^^^^^^^ >this.f : ((n: number) => number) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ ->this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } -> : ^^^^^^^ ^^^^^ ^^ ^^^ ^^^^^ ^^ ^^^ ^^^^^^ ^^^ +>this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } +> : ^^^^^^^ ^^^^^ ^^ ^^^ ^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >f : ((n: number) => number) | undefined > : ^^ ^^ ^^^^^ ^^^^^^^^^^^^^ >m => this.g || m : (m: number) => number @@ -66,8 +66,8 @@ const o2 = { > : ^^^^^^ >this.g : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number; } -> : ^^^^^^^ ^^^^^ ^^ ^^^ ^^^^^ ^^ ^^^ ^^^^^^ ^^^ +>this : { d(): void; e?(n: number): number; f?(n: number): number; g?: number | undefined; } +> : ^^^^^^^ ^^^^^ ^^ ^^^ ^^^^^ ^^ ^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >g : number | undefined > : ^^^^^^^^^^^^^^^^^^ >m : number diff --git a/tests/baselines/reference/typeFromPrivatePropertyAssignmentJs.types b/tests/baselines/reference/typeFromPrivatePropertyAssignmentJs.types index f2ae1474bf53e..e5fb11c1b36a0 100644 --- a/tests/baselines/reference/typeFromPrivatePropertyAssignmentJs.types +++ b/tests/baselines/reference/typeFromPrivatePropertyAssignmentJs.types @@ -9,41 +9,41 @@ class C { /** @type {{ foo?: string } | undefined } */ #a; ->#a : { foo?: string; } | undefined -> : ^^^^^^^^ ^^^^^^^^^^^^^^^ +>#a : { foo?: string | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ /** @type {{ foo?: string } | undefined } */ #b; ->#b : { foo?: string; } | undefined -> : ^^^^^^^^ ^^^^^^^^^^^^^^^ +>#b : { foo?: string | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ m() { >m : () => void > : ^^^^^^^^^^ const a = this.#a || {}; ->a : { foo?: string; } -> : ^^^^^^^^ ^^^ ->this.#a || {} : { foo?: string; } -> : ^^^^^^^^ ^^^ ->this.#a : { foo?: string; } | undefined -> : ^^^^^^^^ ^^^^^^^^^^^^^^^ +>a : { foo?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.#a || {} : { foo?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.#a : { foo?: string | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >{} : {} > : ^^ this.#b = this.#b || {}; ->this.#b = this.#b || {} : { foo?: string; } -> : ^^^^^^^^ ^^^ ->this.#b : { foo?: string; } | undefined -> : ^^^^^^^^ ^^^^^^^^^^^^^^^ +>this.#b = this.#b || {} : { foo?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.#b : { foo?: string | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ ->this.#b || {} : { foo?: string; } -> : ^^^^^^^^ ^^^ ->this.#b : { foo?: string; } | undefined -> : ^^^^^^^^ ^^^^^^^^^^^^^^^ +>this.#b || {} : { foo?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>this.#b : { foo?: string | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >this : this > : ^^^^ >{} : {} diff --git a/tests/baselines/reference/typeGuardNarrowsIndexedAccessOfKnownProperty5.types b/tests/baselines/reference/typeGuardNarrowsIndexedAccessOfKnownProperty5.types index 5d4fc2b9ea232..332d4dc2fe4a7 100644 --- a/tests/baselines/reference/typeGuardNarrowsIndexedAccessOfKnownProperty5.types +++ b/tests/baselines/reference/typeGuardNarrowsIndexedAccessOfKnownProperty5.types @@ -2,10 +2,10 @@ === typeGuardNarrowsIndexedAccessOfKnownProperty5.ts === const a: { key?: { x?: number } } = {}; ->a : { key?: { x?: number; }; } -> : ^^^^^^^^ ^^^ ->key : { x?: number; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>a : { key?: { x?: number | undefined; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>key : { x?: number | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ >{} : {} @@ -20,18 +20,18 @@ const aIndex = "key"; if (a[aIndex] && a[aIndex].x) { >a[aIndex] && a[aIndex].x : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->a[aIndex] : { x?: number; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ ->a : { key?: { x?: number; }; } -> : ^^^^^^^^ ^^^ +>a[aIndex] : { x?: number | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a : { key?: { x?: number | undefined; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >aIndex : "key" > : ^^^^^ >a[aIndex].x : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->a[aIndex] : { x?: number; } -> : ^^^^^^ ^^^ ->a : { key?: { x?: number; }; } -> : ^^^^^^^^ ^^^ +>a[aIndex] : { x?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a : { key?: { x?: number | undefined; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >aIndex : "key" > : ^^^^^ >x : number | undefined @@ -40,10 +40,10 @@ if (a[aIndex] && a[aIndex].x) { a[aIndex].x // number >a[aIndex].x : number > : ^^^^^^ ->a[aIndex] : { x?: number; } -> : ^^^^^^ ^^^ ->a : { key?: { x?: number; }; } -> : ^^^^^^^^ ^^^ +>a[aIndex] : { x?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a : { key?: { x?: number | undefined; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >aIndex : "key" > : ^^^^^ >x : number @@ -53,8 +53,8 @@ if (a[aIndex] && a[aIndex].x) { const b: { key: { x?: number } } = { key: {} }; >b : { key: { x?: number; }; } > : ^^^^^^^ ^^^ ->key : { x?: number; } -> : ^^^^^^ ^^^ +>key : { x?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ >{ key: {} } : { key: {}; } @@ -73,8 +73,8 @@ const bIndex = "key"; if (b[bIndex].x) { >b[bIndex].x : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->b[bIndex] : { x?: number; } -> : ^^^^^^ ^^^ +>b[bIndex] : { x?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { key: { x?: number; }; } > : ^^^^^^^ ^^^ >bIndex : "key" @@ -85,8 +85,8 @@ if (b[bIndex].x) { b[bIndex].x // number >b[bIndex].x : number > : ^^^^^^ ->b[bIndex] : { x?: number; } -> : ^^^^^^ ^^^ +>b[bIndex] : { x?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { key: { x?: number; }; } > : ^^^^^^^ ^^^ >bIndex : "key" diff --git a/tests/baselines/reference/typeGuardNarrowsIndexedAccessOfKnownProperty6.types b/tests/baselines/reference/typeGuardNarrowsIndexedAccessOfKnownProperty6.types index 41a7693dcec2c..d2c893325aeeb 100644 --- a/tests/baselines/reference/typeGuardNarrowsIndexedAccessOfKnownProperty6.types +++ b/tests/baselines/reference/typeGuardNarrowsIndexedAccessOfKnownProperty6.types @@ -6,10 +6,10 @@ declare const aIndex: "key"; > : ^^^^^ const a: { key?: { x?: number } } = {}; ->a : { key?: { x?: number; }; } -> : ^^^^^^^^ ^^^ ->key : { x?: number; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>a : { key?: { x?: number | undefined; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>key : { x?: number | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ >{} : {} @@ -18,18 +18,18 @@ const a: { key?: { x?: number } } = {}; if (a[aIndex] && a[aIndex].x) { >a[aIndex] && a[aIndex].x : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->a[aIndex] : { x?: number; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ ->a : { key?: { x?: number; }; } -> : ^^^^^^^^ ^^^ +>a[aIndex] : { x?: number | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a : { key?: { x?: number | undefined; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >aIndex : "key" > : ^^^^^ >a[aIndex].x : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->a[aIndex] : { x?: number; } -> : ^^^^^^ ^^^ ->a : { key?: { x?: number; }; } -> : ^^^^^^^^ ^^^ +>a[aIndex] : { x?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a : { key?: { x?: number | undefined; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >aIndex : "key" > : ^^^^^ >x : number | undefined @@ -38,10 +38,10 @@ if (a[aIndex] && a[aIndex].x) { a[aIndex].x // number >a[aIndex].x : number > : ^^^^^^ ->a[aIndex] : { x?: number; } -> : ^^^^^^ ^^^ ->a : { key?: { x?: number; }; } -> : ^^^^^^^^ ^^^ +>a[aIndex] : { x?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ +>a : { key?: { x?: number | undefined; } | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >aIndex : "key" > : ^^^^^ >x : number @@ -55,8 +55,8 @@ declare const bIndex: "key"; const b: { key: { x?: number } } = { key: {} }; >b : { key: { x?: number; }; } > : ^^^^^^^ ^^^ ->key : { x?: number; } -> : ^^^^^^ ^^^ +>key : { x?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : number | undefined > : ^^^^^^^^^^^^^^^^^^ >{ key: {} } : { key: {}; } @@ -69,8 +69,8 @@ const b: { key: { x?: number } } = { key: {} }; if (b[bIndex].x) { >b[bIndex].x : number | undefined > : ^^^^^^^^^^^^^^^^^^ ->b[bIndex] : { x?: number; } -> : ^^^^^^ ^^^ +>b[bIndex] : { x?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { key: { x?: number; }; } > : ^^^^^^^ ^^^ >bIndex : "key" @@ -81,8 +81,8 @@ if (b[bIndex].x) { b[bIndex].x // number >b[bIndex].x : number > : ^^^^^^ ->b[bIndex] : { x?: number; } -> : ^^^^^^ ^^^ +>b[bIndex] : { x?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >b : { key: { x?: number; }; } > : ^^^^^^^ ^^^ >bIndex : "key" diff --git a/tests/baselines/reference/typePredicatesOptionalChaining1.types b/tests/baselines/reference/typePredicatesOptionalChaining1.types index fbaaef7607fbe..2e41413c34b5e 100644 --- a/tests/baselines/reference/typePredicatesOptionalChaining1.types +++ b/tests/baselines/reference/typePredicatesOptionalChaining1.types @@ -6,8 +6,8 @@ type X = { > : ^ y?: { ->y : { z?: string; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>y : { z?: string | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ z?: string; >z : string | undefined @@ -88,12 +88,12 @@ isNotNull(x?.y?.z) ? title(x.y.z) : null; // should not error > : ^ ^^ ^^ ^^^^^ >x?.y?.z : string | undefined > : ^^^^^^^^^^^^^^^^^^ ->x?.y : { z?: string; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>x?.y : { z?: string | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : X > : ^ ->y : { z?: string; } | undefined -> : ^^^^^^ ^^^^^^^^^^^^^^^ +>y : { z?: string | undefined; } | undefined +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : string | undefined > : ^^^^^^^^^^^^^^^^^^ >title(x.y.z) : string @@ -102,12 +102,12 @@ isNotNull(x?.y?.z) ? title(x.y.z) : null; // should not error > : ^ ^^ ^^^^^^^^^^^ >x.y.z : string > : ^^^^^^ ->x.y : { z?: string; } -> : ^^^^^^ ^^^ +>x.y : { z?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >x : X > : ^ ->y : { z?: string; } -> : ^^^^^^ ^^^ +>y : { z?: string | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^ >z : string > : ^^^^^^ diff --git a/tests/baselines/reference/typesWithOptionalProperty.types b/tests/baselines/reference/typesWithOptionalProperty.types index 099e92739deb7..94b5c4fd9d9b0 100644 --- a/tests/baselines/reference/typesWithOptionalProperty.types +++ b/tests/baselines/reference/typesWithOptionalProperty.types @@ -18,8 +18,8 @@ interface I { } var a: { ->a : { foo: string; bar?: number; baz?(): string; } -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^ +>a : { foo: string; bar?: number | undefined; baz?(): string; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ foo: string; >foo : string @@ -110,40 +110,40 @@ i = d; a = b; >a = b : { foo: string; } > : ^^^^^^^^^^^^^^^^ ->a : { foo: string; bar?: number; baz?(): string; } -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^ +>a : { foo: string; bar?: number | undefined; baz?(): string; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >b : { foo: string; } > : ^^^^^^^^^^^^^^^^ a = c; >a = c : { foo: string; bar: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a : { foo: string; bar?: number; baz?(): string; } -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^ +>a : { foo: string; bar?: number | undefined; baz?(): string; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >c : { foo: string; bar: number; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ a = d; >a = d : { foo: string; bar: number; baz: () => string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ->a : { foo: string; bar?: number; baz?(): string; } -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^ +>a : { foo: string; bar?: number | undefined; baz?(): string; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >d : { foo: string; bar: number; baz: () => string; } > : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ i = a; ->i = a : { foo: string; bar?: number; baz?(): string; } -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^ +>i = a : { foo: string; bar?: number | undefined; baz?(): string; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >i : I > : ^ ->a : { foo: string; bar?: number; baz?(): string; } -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^ +>a : { foo: string; bar?: number | undefined; baz?(): string; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ a = i; >a = i : I > : ^ ->a : { foo: string; bar?: number; baz?(): string; } -> : ^^^^^^^ ^^^^^^^^ ^^^^^^^^^^ ^^^ +>a : { foo: string; bar?: number | undefined; baz?(): string; } +> : ^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >i : I > : ^ diff --git a/tests/baselines/reference/unionExcessPropsWithPartialMember.types b/tests/baselines/reference/unionExcessPropsWithPartialMember.types index 83a0d0cbc5b36..0d4a7d1ccfdbc 100644 --- a/tests/baselines/reference/unionExcessPropsWithPartialMember.types +++ b/tests/baselines/reference/unionExcessPropsWithPartialMember.types @@ -30,12 +30,12 @@ declare var a: A; > : ^ ab = {...a, y: (null as any as string | undefined)}; // Should be allowed, since `y` is missing on `A` ->ab = {...a, y: (null as any as string | undefined)} : { y: string | undefined; unused?: string; x: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +>ab = {...a, y: (null as any as string | undefined)} : { y: string | undefined; unused?: string | undefined; x: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >ab : A | B > : ^^^^^ ->{...a, y: (null as any as string | undefined)} : { y: string | undefined; unused?: string; x: string; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^ ^^^ +>{...a, y: (null as any as string | undefined)} : { y: string | undefined; unused?: string | undefined; x: string; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^ >a : A > : ^ >y : string | undefined diff --git a/tests/baselines/reference/weakTypeAndPrimitiveNarrowing.types b/tests/baselines/reference/weakTypeAndPrimitiveNarrowing.types index 7fbf97b7a524e..421e66de21a55 100644 --- a/tests/baselines/reference/weakTypeAndPrimitiveNarrowing.types +++ b/tests/baselines/reference/weakTypeAndPrimitiveNarrowing.types @@ -40,13 +40,13 @@ const g = (arg: LiteralsAndWeakTypes) => { > : ^^^ arg; ->arg : { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } | "A" -> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +>arg : { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } | "A" +> : ^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } else { arg; ->arg : { optional?: true; } | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } | "B" -> : ^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^ +>arg : { optional?: true | undefined; } | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } | "B" +> : ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } } @@ -89,8 +89,8 @@ const h = (arg: PrimitivesAndWeakTypes) => { > : ^^^ arg; ->arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number; } -> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^ ^^^ +>arg : "A" | { toLowerCase?(): string; } | { toUpperCase?(): string; otherOptionalProp?: number | undefined; } +> : ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ } else { arg;