Skip to content

Commit 11ec611

Browse files
committed
@typescript-eslint/array-type
1 parent e48123e commit 11ec611

13 files changed

Lines changed: 43 additions & 37 deletions

File tree

.eslintrc

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
"warnOnUnsupportedTypeScriptVersion": false,
55
"ecmaVersion": 6,
66
"sourceType": "module",
7-
"project": "./src/tsconfig-base.json"
7+
"project": "./tsconfig.eslint.json"
88
},
99
"env": {
1010
"browser": false,
@@ -16,11 +16,12 @@
1616
],
1717
"rules": {
1818
"@typescript-eslint/adjacent-overload-signatures": "error",
19-
"@typescript-eslint/array-type": "off",
19+
"@typescript-eslint/array-type": ["error", { "default": "array", "readonly": "generic" }],
2020
"@typescript-eslint/ban-types": "off",
2121
"camelcase": "off",
2222
"@typescript-eslint/camelcase": ["error", { "properties": "never", "allow": ["^[A-Za-z][a-zA-Za-z]+_[A-Za-z]+$"] }],
2323
"@typescript-eslint/class-name-casing": "error",
24+
"@typescript-eslint/consistent-type-assertions": "off",
2425
"@typescript-eslint/consistent-type-definitions": ["error", "interface"],
2526
"@typescript-eslint/explicit-member-accessibility": "off",
2627
"@typescript-eslint/import/order": "off",
@@ -34,13 +35,11 @@
3435
}],
3536
"@typescript-eslint/interface-name-prefix": "error",
3637
"@typescript-eslint/member-ordering": "off",
37-
"@typescript-eslint/no-angle-bracket-type-assertion": "off",
3838
"@typescript-eslint/no-empty-interface": "off",
3939
"@typescript-eslint/no-explicit-any": "off",
4040
"@typescript-eslint/no-inferrable-types": "error",
4141
"@typescript-eslint/no-misused-new": "error",
4242
"@typescript-eslint/no-namespace": "off",
43-
"@typescript-eslint/no-object-literal-type-assertion": "off",
4443
"@typescript-eslint/no-parameter-properties": "off",
4544
"@typescript-eslint/no-this-alias": "error",
4645
"@typescript-eslint/no-unnecessary-qualifier": "error",

package.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@
5454
"@types/through2": "latest",
5555
"@types/travis-fold": "latest",
5656
"@types/xml2js": "^0.4.0",
57-
"@typescript-eslint/eslint-plugin": "1.13.0",
58-
"@typescript-eslint/experimental-utils": "1.13.0",
59-
"@typescript-eslint/parser": "1.13.0",
57+
"@typescript-eslint/eslint-plugin": "2.0.0-alpha.4",
58+
"@typescript-eslint/experimental-utils": "2.0.0-alpha.4",
59+
"@typescript-eslint/parser": "2.0.0-alpha.4",
6060
"async": "latest",
6161
"azure-devops-node-api": "^8.0.0",
6262
"browser-resolve": "^1.11.2",
@@ -68,7 +68,7 @@
6868
"eslint": "6.1.0",
6969
"eslint-formatter-autolinkable-stylish": "1.0.0",
7070
"eslint-plugin-import": "2.18.2",
71-
"eslint-plugin-jsdoc": "15.6.1",
71+
"eslint-plugin-jsdoc": "15.7.2",
7272
"eslint-plugin-no-null": "1.0.2",
7373
"fancy-log": "latest",
7474
"fs-extra": "^6.0.1",

scripts/errorCheck.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ fs.readFile("src/compiler/diagnosticMessages.json", "utf-8", (err, data) => {
2020

2121
fs.readdir(baseDir, (err, files) => {
2222
files = files.filter(f => f.indexOf(".errors.txt") > 0);
23-
const tasks: Array<(callback: () => void) => void> = [];
23+
const tasks: ((callback: () => void) => void)[] = [];
2424
files.forEach(f => tasks.push(done => {
2525
fs.readFile(baseDir + f, "utf-8", (err, baseline) => {
2626
if (err) throw err;

src/compiler/builder.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -996,7 +996,7 @@ namespace ts {
996996
}
997997
}
998998

999-
function addToAffectedFilesPendingEmit(state: BuilderProgramState, affectedFilesPendingEmit: readonly Path[]) {
999+
function addToAffectedFilesPendingEmit(state: BuilderProgramState, affectedFilesPendingEmit: ReadonlyArray<Path>) {
10001000
state.affectedFilesPendingEmit = concatenate(state.affectedFilesPendingEmit, affectedFilesPendingEmit);
10011001
// affectedFilesPendingEmitIndex === undefined
10021002
// - means the emit state.affectedFilesPendingEmit was undefined before adding current affected files

src/compiler/checker.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7402,7 +7402,7 @@ namespace ts {
74027402
setStructuredTypeMembers(type, emptySymbols, callSignatures || emptyArray, constructSignatures || emptyArray, stringIndexInfo, numberIndexInfo);
74037403
}
74047404

7405-
function appendSignatures(signatures: Signature[] | undefined, newSignatures: readonly Signature[]) {
7405+
function appendSignatures(signatures: Signature[] | undefined, newSignatures: ReadonlyArray<Signature>) {
74067406
for (const sig of newSignatures) {
74077407
if (!signatures || every(signatures, s => !compareSignaturesIdentical(s, sig, /*partialMatch*/ false, /*ignoreThisTypes*/ false, /*ignoreReturnTypes*/ false, compareTypesIdentical))) {
74087408
signatures = append(signatures, sig);
@@ -13226,7 +13226,7 @@ namespace ts {
1322613226
return result;
1322713227
}
1322813228

13229-
function propagateSidebandVarianceFlags(typeArguments: readonly Type[], variances: VarianceFlags[]) {
13229+
function propagateSidebandVarianceFlags(typeArguments: ReadonlyArray<Type>, variances: VarianceFlags[]) {
1323013230
for (let i = 0; i < variances.length; i++) {
1323113231
const v = variances[i];
1323213232
if (v & VarianceFlags.Unmeasurable) {
@@ -15677,7 +15677,7 @@ namespace ts {
1567715677
}
1567815678
}
1567915679

15680-
function inferFromTypeArguments(sourceTypes: readonly Type[], targetTypes: readonly Type[], variances: readonly VarianceFlags[]) {
15680+
function inferFromTypeArguments(sourceTypes: ReadonlyArray<Type>, targetTypes: ReadonlyArray<Type>, variances: ReadonlyArray<VarianceFlags>) {
1568115681
const count = sourceTypes.length < targetTypes.length ? sourceTypes.length : targetTypes.length;
1568215682
for (let i = 0; i < count; i++) {
1568315683
if (i < variances.length && (variances[i] & VarianceFlags.VarianceMask) === VarianceFlags.Contravariant) {

src/compiler/core.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2200,13 +2200,13 @@ namespace ts {
22002200
return result;
22012201
}
22022202

2203-
export function cartesianProduct<T>(arrays: readonly T[][]) {
2203+
export function cartesianProduct<T>(arrays: ReadonlyArray<T>[]) {
22042204
const result: T[][] = [];
22052205
cartesianProductWorker(arrays, result, /*outer*/ undefined, 0);
22062206
return result;
22072207
}
22082208

2209-
function cartesianProductWorker<T>(arrays: readonly (readonly T[])[], result: (readonly T[])[], outer: readonly T[] | undefined, index: number) {
2209+
function cartesianProductWorker<T>(arrays: ReadonlyArray<ReadonlyArray<T>>, result: (ReadonlyArray<T>)[], outer: ReadonlyArray<T> | undefined, index: number) {
22102210
for (const element of arrays[index]) {
22112211
let inner: T[];
22122212
if (outer) {

src/compiler/tsbuild.ts

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -372,15 +372,15 @@ namespace ts {
372372
readonly extendedConfigCache: Map<ExtendedConfigCacheEntry>;
373373

374374
readonly builderPrograms: ConfigFileMap<T>;
375-
readonly diagnostics: ConfigFileMap<readonly Diagnostic[]>;
375+
readonly diagnostics: ConfigFileMap<ReadonlyArray<Diagnostic>>;
376376
readonly projectPendingBuild: ConfigFileMap<ConfigFileProgramReloadLevel>;
377377
readonly projectErrorsReported: ConfigFileMap<true>;
378378

379379
readonly compilerHost: CompilerHost;
380380
readonly moduleResolutionCache: ModuleResolutionCache | undefined;
381381

382382
// Mutable state
383-
buildOrder: readonly ResolvedConfigFileName[] | undefined;
383+
buildOrder: ReadonlyArray<ResolvedConfigFileName> | undefined;
384384
readFileWithCache: (f: string) => string | undefined;
385385
projectCompilerOptions: CompilerOptions;
386386
cache: SolutionBuilderStateCache | undefined;
@@ -524,7 +524,7 @@ namespace ts {
524524
return resolveConfigFileProjectName(resolvePath(state.currentDirectory, name));
525525
}
526526

527-
function createBuildOrder(state: SolutionBuilderState, roots: readonly ResolvedConfigFileName[]): readonly ResolvedConfigFileName[] {
527+
function createBuildOrder(state: SolutionBuilderState, roots: ReadonlyArray<ResolvedConfigFileName>): ReadonlyArray<ResolvedConfigFileName> {
528528
const temporaryMarks = createMap() as ConfigFileMap<true>;
529529
const permanentMarks = createMap() as ConfigFileMap<true>;
530530
const circularityReportStack: string[] = [];
@@ -683,7 +683,7 @@ namespace ts {
683683
readonly kind: InvalidatedProjectKind;
684684
readonly project: ResolvedConfigFileName;
685685
/*@internal*/ readonly projectPath: ResolvedConfigFilePath;
686-
/*@internal*/ readonly buildOrder: readonly ResolvedConfigFileName[];
686+
/*@internal*/ readonly buildOrder: ReadonlyArray<ResolvedConfigFileName>;
687687
/**
688688
* To dispose this project and ensure that all the necessary actions are taken and state is updated accordingly
689689
*/
@@ -750,7 +750,7 @@ namespace ts {
750750
project: ResolvedConfigFileName,
751751
projectPath: ResolvedConfigFilePath,
752752
config: ParsedCommandLine,
753-
buildOrder: readonly ResolvedConfigFileName[]
753+
buildOrder: ReadonlyArray<ResolvedConfigFileName>
754754
): UpdateOutputFileStampsProject {
755755
let updateOutputFileStampsPending = true;
756756
return {
@@ -780,7 +780,7 @@ namespace ts {
780780
projectPath: ResolvedConfigFilePath,
781781
projectIndex: number,
782782
config: ParsedCommandLine,
783-
buildOrder: readonly ResolvedConfigFileName[],
783+
buildOrder: ReadonlyArray<ResolvedConfigFileName>,
784784
): BuildInvalidedProject<T> | UpdateBundleProject<T> {
785785
enum Step {
786786
CreateProgram,
@@ -1195,7 +1195,7 @@ namespace ts {
11951195

11961196
function getNextInvalidatedProject<T extends BuilderProgram>(
11971197
state: SolutionBuilderState<T>,
1198-
buildOrder: readonly ResolvedConfigFileName[],
1198+
buildOrder: ReadonlyArray<ResolvedConfigFileName>,
11991199
reportQueue: boolean
12001200
): InvalidatedProject<T> | undefined {
12011201
if (!state.projectPendingBuild.size) return undefined;
@@ -1631,7 +1631,7 @@ namespace ts {
16311631
projectPath: ResolvedConfigFilePath,
16321632
projectIndex: number,
16331633
config: ParsedCommandLine,
1634-
buildOrder: readonly ResolvedConfigFileName[],
1634+
buildOrder: ReadonlyArray<ResolvedConfigFileName>,
16351635
buildResult: BuildResultFlags
16361636
) {
16371637
// Queue only if there are no errors
@@ -1913,7 +1913,7 @@ namespace ts {
19131913
);
19141914
}
19151915

1916-
function startWatching(state: SolutionBuilderState, buildOrder: readonly ResolvedConfigFileName[]) {
1916+
function startWatching(state: SolutionBuilderState, buildOrder: ReadonlyArray<ResolvedConfigFileName>) {
19171917
if (!state.watchAllProjectsPending) return;
19181918
state.watchAllProjectsPending = false;
19191919
for (const resolved of buildOrder) {
@@ -1990,7 +1990,7 @@ namespace ts {
19901990
reportAndStoreErrors(state, proj, [state.configFileCache.get(proj) as Diagnostic]);
19911991
}
19921992

1993-
function reportErrorSummary(state: SolutionBuilderState, buildOrder: readonly ResolvedConfigFileName[]) {
1993+
function reportErrorSummary(state: SolutionBuilderState, buildOrder: ReadonlyArray<ResolvedConfigFileName>) {
19941994
if (!state.needsSummary || (!state.watch && !state.host.reportErrorSummary)) return;
19951995
state.needsSummary = false;
19961996
const { diagnostics } = state;
@@ -2014,7 +2014,7 @@ namespace ts {
20142014
/**
20152015
* Report the build ordering inferred from the current project graph if we're in verbose mode
20162016
*/
2017-
function reportBuildQueue(state: SolutionBuilderState, buildQueue: readonly ResolvedConfigFileName[]) {
2017+
function reportBuildQueue(state: SolutionBuilderState, buildQueue: ReadonlyArray<ResolvedConfigFileName>) {
20182018
if (state.options.verbose) {
20192019
reportStatus(state, Diagnostics.Projects_in_this_build_Colon_0, buildQueue.map(s => "\r\n * " + relName(state, s)).join(""));
20202020
}

src/compiler/types.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3039,8 +3039,8 @@ namespace ts {
30393039

30403040
/*@internal*/
30413041
export interface EmitTransformers {
3042-
scriptTransformers: readonly TransformerFactory<SourceFile | Bundle>[];
3043-
declarationTransformers: readonly TransformerFactory<SourceFile | Bundle>[];
3042+
scriptTransformers: ReadonlyArray<TransformerFactory<SourceFile | Bundle>>;
3043+
declarationTransformers: ReadonlyArray<TransformerFactory<SourceFile | Bundle>>;
30443044
}
30453045

30463046
export interface SourceMapSpan {
@@ -6098,7 +6098,7 @@ namespace ts {
60986098
(U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
60996099

61006100
/* @internal */
6101-
type ArgumentDefinitionToFieldUnion<T extends readonly PragmaArgumentSpecification<any>[]> = {
6101+
type ArgumentDefinitionToFieldUnion<T extends ReadonlyArray<PragmaArgumentSpecification<any>>> = {
61026102
[K in keyof T]: PragmaArgTypeOptional<T[K], T[K] extends {name: infer TName} ? TName extends string ? TName : never : never>
61036103
}[Extract<keyof T, number>]; // The mapped type maps over only the tuple members, but this reindex gets _all_ members - by extracting only `number` keys, we get only the tuple members
61046104

@@ -6107,7 +6107,7 @@ namespace ts {
61076107
*/
61086108
/* @internal */
61096109
type PragmaArgumentType<KPrag extends keyof ConcretePragmaSpecs> =
6110-
ConcretePragmaSpecs[KPrag] extends { args: readonly PragmaArgumentSpecification<any>[] }
6110+
ConcretePragmaSpecs[KPrag] extends { args: ReadonlyArray<PragmaArgumentSpecification<any>> }
61116111
? UnionToIntersection<ArgumentDefinitionToFieldUnion<ConcretePragmaSpecs[KPrag]["args"]>>
61126112
: never;
61136113

src/lib/es2019.object.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ interface ObjectConstructor {
1111
* Returns an object created by key-value entries for properties and methods
1212
* @param entries An iterable object that contains key-value entries for properties and methods.
1313
*/
14-
fromEntries(entries: Iterable<readonly any[]>): any;
14+
fromEntries(entries: Iterable<ReadonlyArray<any>>): any;
1515
}

src/lib/es5.d.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1341,8 +1341,8 @@ interface ArrayConstructor {
13411341
(arrayLength?: number): any[];
13421342
<T>(arrayLength: number): T[];
13431343
<T>(...items: T[]): T[];
1344-
isArray(arg: any): arg is Array<any>;
1345-
readonly prototype: Array<any>;
1344+
isArray(arg: any): arg is any[];
1345+
readonly prototype: any[];
13461346
}
13471347

13481348
declare var Array: ArrayConstructor;

0 commit comments

Comments
 (0)