8000 fix(eslint-plugin): delete [] in message if ReadOnly<string[]> is det… · jakebailey/typescript-eslint@8e01254 · GitHub
[go: up one dir, main page]

Skip to content

Commit 8e01254

Browse files
authored
fix(eslint-plugin): delete [] in message if ReadOnly<string[]> is detected (typescript-eslint#9513)
* delete [] in meesage if ReadOnly<string[]> is detected * issue fix * added unit testing for this change
1 parent 3ca8477 commit 8e01254

File tree

2 files changed

+22
-3
lines changed

2 files changed

+22
-3
lines changed

packages/eslint-plugin/src/rules/array-type.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,8 @@ type MessageIds =
8383
| 'errorStringArraySimple'
8484
| 'errorStringGeneric'
8585
| 'errorStringGenericSimple'
86-
| 'errorStringArrayReadonly';
86+
| 'errorStringArrayReadonly'
87+
| 'errorStringArraySimpleReadonly';
8788

8889
export default createRule<Options, MessageIds>({
8990
name: 'array-type',
@@ -106,6 +107,8 @@ export default createRule<Options, MessageIds>({
106107
"Array type using '{{className}}<{{type}}>' is forbidden for simple types. Use '{{readonlyPrefix}}{{type}}[]' instead.",
107108
errorStringGenericSimple:
108109
"Array type using '{{readonlyPrefix}}{{type}}[]' is forbidden for non-simple types. Use '{{className}}<{{type}}>' instead.",
110+
errorStringArraySimpleReadonly:
111+
"Array type using '{{className}}<{{type}}>' is forbidden for simple types. Use '{{readonlyPrefix}}{{type}}' instead.",
109112
},
110113
schema: [
111114
{
@@ -233,7 +236,9 @@ export default createRule<Options, MessageIds>({
233236
? isReadonlyWithGenericArrayType
234237
? 'errorStringArrayReadonly'
235238
: 'errorStringArray'
236-
: 'errorStringArraySimple';
239+
: isReadonlyArrayType && node.typeName.name !== 'ReadonlyArray'
240+
? 'errorStringArraySimpleReadonly'
241+
: 'errorStringArraySimple';
237242

238243
if (!typeParams || typeParams.length === 0) {
239244
// Create an 'any' array
@@ -271,7 +276,6 @@ export default createRule<Options, MessageIds>({
271276
typeParens ? '(' : ''
272277
}`;
273278
const end = `${typeParens ? ')' : ''}${isReadonlyWithGenericArrayType ? '' : `[]`}${parentParens ? ')' : ''}`;
274-
275279
context.report({
276280
node,
277281
messageId,

packages/eslint-plugin/tests/rules/array-type.test.ts

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1939,6 +1939,21 @@ interface FooInterface {
19391939
},
19401940
],
19411941
},
1942+
{
1943+
code: 'declare function foo<E extends Readonly<string[]>>(extra: E): E;',
1944+
output: 'declare function foo<E extends readonly string[]>(extra: E): E;',
1945+
options: [{ default: 'array-simple' }],
1946+
errors: [
1947+
{
1948+
messageId: 'errorStringArraySimpleReadonly',
1949+
data: {
1950+
className: 'Readonly',
1951+
readonlyPrefix: 'readonly ',
1952+
type: 'string[]',
1953+
},
1954+
},
1955+
],
1956+
},
19421957
],
19431958
});
19441959

0 commit comments

Comments
 (0)
0