Skip to content
This repository was archived by the owner on Mar 25, 2021. It is now read-only.

Commit 89d731f

Browse files
MaximeKjaerJosh Goldberg
authored and
Josh Goldberg
committed
Fix parenthesized simple array types with array-simple (#4844) (#4846)
1 parent abd83b5 commit 89d731f

File tree

3 files changed

+12
-0
lines changed

3 files changed

+12
-0
lines changed

src/rules/arrayTypeRule.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,8 @@ function isSimpleType(nodeType: ts.TypeNode): boolean {
164164
case ts.SyntaxKind.ThisType:
165165
case ts.SyntaxKind.UnknownKeyword:
166166
return true;
167+
case ts.SyntaxKind.ParenthesizedType:
168+
return isSimpleType((nodeType as ts.ParenthesizedTypeNode).type);
167169
case ts.SyntaxKind.TypeReference:
168170
// TypeReferences must be non-generic or be another Array with a simple type
169171
const { typeName, typeArguments } = nodeType as ts.TypeReferenceNode;

test/rules/array-type/array-simple/test.ts.fix

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ let yy: number[][] = [[4, 5], [6]];
1010
let ya = [[1, "2"]] as Array<[number, string]>;
1111

1212
type Arr<T> = T[];
13+
type ParenthesisArr<T> = (T)[];
14+
type DoubleParenthesisArr<T> = ((T))[];
1315

1416
// Ignore user defined aliases
1517
let yyyy: Arr<Array<Array<Arr<string>>>> = [[[["2"]]]];
@@ -38,9 +40,11 @@ let barVar: Array<(c: number) => number>;
3840

3941
type fooUnion = Array<string|number|boolean>;
4042
type barUnion = Array<string|number|boolean>;
43+
type bazUnion = Array<(string|number|boolean)>;
4144

4245
type fooIntersection = Array<string & number>;
4346
type barIntersection = Array<string & number>;
47+
type bazIntersection = Array<(string & number)>;
4448

4549
namespace fooName {
4650
type BarType = { bar: string };

test/rules/array-type/array-simple/test.ts.lint

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ let ya = [[1, "2"]] as[number, string][];
1919

2020
type Arr<T> = Array<T>;
2121
~~~~~~~~ [0]
22+
type ParenthesisArr<T> = (T)[];
23+
type DoubleParenthesisArr<T> = ((T))[];
2224

2325
// Ignore user defined aliases
2426
let yyyy: Arr<Array<Arr<string>>[]> = [[[["2"]]]];
@@ -52,10 +54,14 @@ let barVar: ((c: number) => number)[];
5254
type fooUnion = Array<string|number|boolean>;
5355
type barUnion = (string|number|boolean)[];
5456
~~~~~~~~~~~~~~~~~~~~~~~~~ [Array type using 'T[]' is forbidden for non-simple types. Use 'Array<T>' instead.]
57+
type bazUnion = ((string|number|boolean))[];
58+
~~~~~~~~~~~~~~~~~~~~~~~~~~~ [Array type using 'T[]' is forbidden for non-simple types. Use 'Array<T>' instead.]
5559

5660
type fooIntersection = Array<string & number>;
5761
type barIntersection = (string & number)[];
5862
~~~~~~~~~~~~~~~~~~~ [Array type using 'T[]' is forbidden for non-simple types. Use 'Array<T>' instead.]
63+
type bazIntersection = ((string & number))[];
64+
~~~~~~~~~~~~~~~~~~~~~ [Array type using 'T[]' is forbidden for non-simple types. Use 'Array<T>' instead.]
5965

6066
namespace fooName {
6167
type BarType = { bar: string };

0 commit comments

Comments
 (0)