From 04187bde8de24f1913099ce04cf22dbb8d20e59c Mon Sep 17 00:00:00 2001 From: Andy Date: Fri, 8 Jun 2018 15:56:56 -0700 Subject: [PATCH] fixStrictClassInitialization: Support array initializer (#24810) --- src/compiler/types.ts | 2 +- src/services/codefixes/fixStrictClassInitialization.ts | 3 +++ .../fourslash/codeFixClassPropertyInitialization_all_3.ts | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 726947111be..32c6faea37c 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -3056,12 +3056,12 @@ namespace ts { /* @internal */ getSymbolCount(): number; /* @internal */ getTypeCount(): number; + /* @internal */ isArrayLikeType(type: Type): boolean; /** * For a union, will include a property if it's defined in *any* of the member types. * So for `{ a } | { b }`, this will include both `a` and `b`. * Does not include properties of primitive types. */ - /* @internal */ isArrayLikeType(type: Type): boolean; /* @internal */ getAllPossiblePropertiesOfTypes(type: ReadonlyArray): Symbol[]; /* @internal */ resolveName(name: string, location: Node, meaning: SymbolFlags, excludeGlobals: boolean): Symbol | undefined; /* @internal */ getJsxNamespace(location?: Node): string; diff --git a/src/services/codefixes/fixStrictClassInitialization.ts b/src/services/codefixes/fixStrictClassInitialization.ts index 278d1e2d3f6..f52ebadc851 100644 --- a/src/services/codefixes/fixStrictClassInitialization.ts +++ b/src/services/codefixes/fixStrictClassInitialization.ts @@ -127,6 +127,9 @@ namespace ts.codefix { return createNew(createIdentifier(type.symbol.name), /*typeArguments*/ undefined, /*argumentsArray*/ undefined); } + else if (checker.isArrayLikeType(type)) { + return createArrayLiteral(); + } return undefined; } } diff --git a/tests/cases/fourslash/codeFixClassPropertyInitialization_all_3.ts b/tests/cases/fourslash/codeFixClassPropertyInitialization_all_3.ts index 29a9fe19b15..08584a01f91 100644 --- a/tests/cases/fourslash/codeFixClassPropertyInitialization_all_3.ts +++ b/tests/cases/fourslash/codeFixClassPropertyInitialization_all_3.ts @@ -35,6 +35,8 @@ //// k: AT; //// //// l: Foo; +//// +//// m: number[]; //// } verify.codeFixAll({ @@ -73,5 +75,7 @@ class T { k: AT = new AT; l: Foo = new Foo; + + m: number[] = []; }` }); \ No newline at end of file