mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-06-27 04:48:33 -05:00
@typescript-eslint/array-type
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
"warnOnUnsupportedTypeScriptVersion": false,
|
||||
"ecmaVersion": 6,
|
||||
"sourceType": "module",
|
||||
"project": "./src/tsconfig-base.json"
|
||||
"project": "./tsconfig.eslint.json"
|
||||
},
|
||||
"env": {
|
||||
"browser": false,
|
||||
@@ -16,11 +16,12 @@
|
||||
],
|
||||
"rules": {
|
||||
"@typescript-eslint/adjacent-overload-signatures": "error",
|
||||
"@typescript-eslint/array-type": "off",
|
||||
"@typescript-eslint/array-type": ["error", { "default": "array", "readonly": "generic" }],
|
||||
"@typescript-eslint/ban-types": "off",
|
||||
"camelcase": "off",
|
||||
"@typescript-eslint/camelcase": ["error", { "properties": "never", "allow": ["^[A-Za-z][a-zA-Za-z]+_[A-Za-z]+$"] }],
|
||||
"@typescript-eslint/class-name-casing": "error",
|
||||
"@typescript-eslint/consistent-type-assertions": "off",
|
||||
"@typescript-eslint/consistent-type-definitions": ["error", "interface"],
|
||||
"@typescript-eslint/explicit-member-accessibility": "off",
|
||||
"@typescript-eslint/import/order": "off",
|
||||
@@ -34,13 +35,11 @@
|
||||
}],
|
||||
"@typescript-eslint/interface-name-prefix": "error",
|
||||
"@typescript-eslint/member-ordering": "off",
|
||||
"@typescript-eslint/no-angle-bracket-type-assertion": "off",
|
||||
"@typescript-eslint/no-empty-interface": "off",
|
||||
"@typescript-eslint/no-explicit-any": "off",
|
||||
"@typescript-eslint/no-inferrable-types": "error",
|
||||
"@typescript-eslint/no-misused-new": "error",
|
||||
"@typescript-eslint/no-namespace": "off",
|
||||
"@typescript-eslint/no-object-literal-type-assertion": "off",
|
||||
"@typescript-eslint/no-parameter-properties": "off",
|
||||
"@typescript-eslint/no-this-alias": "error",
|
||||
"@typescript-eslint/no-unnecessary-qualifier": "error",
|
||||
|
||||
@@ -54,9 +54,9 @@
|
||||
"@types/through2": "latest",
|
||||
"@types/travis-fold": "latest",
|
||||
"@types/xml2js": "^0.4.0",
|
||||
"@typescript-eslint/eslint-plugin": "1.13.0",
|
||||
"@typescript-eslint/experimental-utils": "1.13.0",
|
||||
"@typescript-eslint/parser": "1.13.0",
|
||||
"@typescript-eslint/eslint-plugin": "2.0.0-alpha.4",
|
||||
"@typescript-eslint/experimental-utils": "2.0.0-alpha.4",
|
||||
"@typescript-eslint/parser": "2.0.0-alpha.4",
|
||||
"async": "latest",
|
||||
"azure-devops-node-api": "^8.0.0",
|
||||
"browser-resolve": "^1.11.2",
|
||||
@@ -68,7 +68,7 @@
|
||||
"eslint": "6.1.0",
|
||||
"eslint-formatter-autolinkable-stylish": "1.0.0",
|
||||
"eslint-plugin-import": "2.18.2",
|
||||
"eslint-plugin-jsdoc": "15.6.1",
|
||||
"eslint-plugin-jsdoc": "15.7.2",
|
||||
"eslint-plugin-no-null": "1.0.2",
|
||||
"fancy-log": "latest",
|
||||
"fs-extra": "^6.0.1",
|
||||
|
||||
@@ -20,7 +20,7 @@ fs.readFile("src/compiler/diagnosticMessages.json", "utf-8", (err, data) => {
|
||||
|
||||
fs.readdir(baseDir, (err, files) => {
|
||||
files = files.filter(f => f.indexOf(".errors.txt") > 0);
|
||||
const tasks: Array<(callback: () => void) => void> = [];
|
||||
const tasks: ((callback: () => void) => void)[] = [];
|
||||
files.forEach(f => tasks.push(done => {
|
||||
fs.readFile(baseDir + f, "utf-8", (err, baseline) => {
|
||||
if (err) throw err;
|
||||
|
||||
@@ -996,7 +996,7 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
function addToAffectedFilesPendingEmit(state: BuilderProgramState, affectedFilesPendingEmit: readonly Path[]) {
|
||||
function addToAffectedFilesPendingEmit(state: BuilderProgramState, affectedFilesPendingEmit: ReadonlyArray<Path>) {
|
||||
state.affectedFilesPendingEmit = concatenate(state.affectedFilesPendingEmit, affectedFilesPendingEmit);
|
||||
// affectedFilesPendingEmitIndex === undefined
|
||||
// - means the emit state.affectedFilesPendingEmit was undefined before adding current affected files
|
||||
|
||||
@@ -7402,7 +7402,7 @@ namespace ts {
|
||||
setStructuredTypeMembers(type, emptySymbols, callSignatures || emptyArray, constructSignatures || emptyArray, stringIndexInfo, numberIndexInfo);
|
||||
}
|
||||
|
||||
function appendSignatures(signatures: Signature[] | undefined, newSignatures: readonly Signature[]) {
|
||||
function appendSignatures(signatures: Signature[] | undefined, newSignatures: ReadonlyArray<Signature>) {
|
||||
for (const sig of newSignatures) {
|
||||
if (!signatures || every(signatures, s => !compareSignaturesIdentical(s, sig, /*partialMatch*/ false, /*ignoreThisTypes*/ false, /*ignoreReturnTypes*/ false, compareTypesIdentical))) {
|
||||
signatures = append(signatures, sig);
|
||||
@@ -13226,7 +13226,7 @@ namespace ts {
|
||||
return result;
|
||||
}
|
||||
|
||||
function propagateSidebandVarianceFlags(typeArguments: readonly Type[], variances: VarianceFlags[]) {
|
||||
function propagateSidebandVarianceFlags(typeArguments: ReadonlyArray<Type>, variances: VarianceFlags[]) {
|
||||
for (let i = 0; i < variances.length; i++) {
|
||||
const v = variances[i];
|
||||
if (v & VarianceFlags.Unmeasurable) {
|
||||
@@ -15677,7 +15677,7 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
function inferFromTypeArguments(sourceTypes: readonly Type[], targetTypes: readonly Type[], variances: readonly VarianceFlags[]) {
|
||||
function inferFromTypeArguments(sourceTypes: ReadonlyArray<Type>, targetTypes: ReadonlyArray<Type>, variances: ReadonlyArray<VarianceFlags>) {
|
||||
const count = sourceTypes.length < targetTypes.length ? sourceTypes.length : targetTypes.length;
|
||||
for (let i = 0; i < count; i++) {
|
||||
if (i < variances.length && (variances[i] & VarianceFlags.VarianceMask) === VarianceFlags.Contravariant) {
|
||||
|
||||
@@ -2200,13 +2200,13 @@ namespace ts {
|
||||
return result;
|
||||
}
|
||||
|
||||
export function cartesianProduct<T>(arrays: readonly T[][]) {
|
||||
export function cartesianProduct<T>(arrays: ReadonlyArray<T>[]) {
|
||||
const result: T[][] = [];
|
||||
cartesianProductWorker(arrays, result, /*outer*/ undefined, 0);
|
||||
return result;
|
||||
}
|
||||
|
||||
function cartesianProductWorker<T>(arrays: readonly (readonly T[])[], result: (readonly T[])[], outer: readonly T[] | undefined, index: number) {
|
||||
function cartesianProductWorker<T>(arrays: ReadonlyArray<ReadonlyArray<T>>, result: (ReadonlyArray<T>)[], outer: ReadonlyArray<T> | undefined, index: number) {
|
||||
for (const element of arrays[index]) {
|
||||
let inner: T[];
|
||||
if (outer) {
|
||||
|
||||
@@ -372,7 +372,7 @@ namespace ts {
|
||||
readonly extendedConfigCache: Map<ExtendedConfigCacheEntry>;
|
||||
|
||||
readonly builderPrograms: ConfigFileMap<T>;
|
||||
readonly diagnostics: ConfigFileMap<readonly Diagnostic[]>;
|
||||
readonly diagnostics: ConfigFileMap<ReadonlyArray<Diagnostic>>;
|
||||
readonly projectPendingBuild: ConfigFileMap<ConfigFileProgramReloadLevel>;
|
||||
readonly projectErrorsReported: ConfigFileMap<true>;
|
||||
|
||||
@@ -380,7 +380,7 @@ namespace ts {
|
||||
readonly moduleResolutionCache: ModuleResolutionCache | undefined;
|
||||
|
||||
// Mutable state
|
||||
buildOrder: readonly ResolvedConfigFileName[] | undefined;
|
||||
buildOrder: ReadonlyArray<ResolvedConfigFileName> | undefined;
|
||||
readFileWithCache: (f: string) => string | undefined;
|
||||
projectCompilerOptions: CompilerOptions;
|
||||
cache: SolutionBuilderStateCache | undefined;
|
||||
@@ -524,7 +524,7 @@ namespace ts {
|
||||
return resolveConfigFileProjectName(resolvePath(state.currentDirectory, name));
|
||||
}
|
||||
|
||||
function createBuildOrder(state: SolutionBuilderState, roots: readonly ResolvedConfigFileName[]): readonly ResolvedConfigFileName[] {
|
||||
function createBuildOrder(state: SolutionBuilderState, roots: ReadonlyArray<ResolvedConfigFileName>): ReadonlyArray<ResolvedConfigFileName> {
|
||||
const temporaryMarks = createMap() as ConfigFileMap<true>;
|
||||
const permanentMarks = createMap() as ConfigFileMap<true>;
|
||||
const circularityReportStack: string[] = [];
|
||||
@@ -683,7 +683,7 @@ namespace ts {
|
||||
readonly kind: InvalidatedProjectKind;
|
||||
readonly project: ResolvedConfigFileName;
|
||||
/*@internal*/ readonly projectPath: ResolvedConfigFilePath;
|
||||
/*@internal*/ readonly buildOrder: readonly ResolvedConfigFileName[];
|
||||
/*@internal*/ readonly buildOrder: ReadonlyArray<ResolvedConfigFileName>;
|
||||
/**
|
||||
* To dispose this project and ensure that all the necessary actions are taken and state is updated accordingly
|
||||
*/
|
||||
@@ -750,7 +750,7 @@ namespace ts {
|
||||
project: ResolvedConfigFileName,
|
||||
projectPath: ResolvedConfigFilePath,
|
||||
config: ParsedCommandLine,
|
||||
buildOrder: readonly ResolvedConfigFileName[]
|
||||
buildOrder: ReadonlyArray<ResolvedConfigFileName>
|
||||
): UpdateOutputFileStampsProject {
|
||||
let updateOutputFileStampsPending = true;
|
||||
return {
|
||||
@@ -780,7 +780,7 @@ namespace ts {
|
||||
projectPath: ResolvedConfigFilePath,
|
||||
projectIndex: number,
|
||||
config: ParsedCommandLine,
|
||||
buildOrder: readonly ResolvedConfigFileName[],
|
||||
buildOrder: ReadonlyArray<ResolvedConfigFileName>,
|
||||
): BuildInvalidedProject<T> | UpdateBundleProject<T> {
|
||||
enum Step {
|
||||
CreateProgram,
|
||||
@@ -1195,7 +1195,7 @@ namespace ts {
|
||||
|
||||
function getNextInvalidatedProject<T extends BuilderProgram>(
|
||||
state: SolutionBuilderState<T>,
|
||||
buildOrder: readonly ResolvedConfigFileName[],
|
||||
buildOrder: ReadonlyArray<ResolvedConfigFileName>,
|
||||
reportQueue: boolean
|
||||
): InvalidatedProject<T> | undefined {
|
||||
if (!state.projectPendingBuild.size) return undefined;
|
||||
@@ -1631,7 +1631,7 @@ namespace ts {
|
||||
projectPath: ResolvedConfigFilePath,
|
||||
projectIndex: number,
|
||||
config: ParsedCommandLine,
|
||||
buildOrder: readonly ResolvedConfigFileName[],
|
||||
buildOrder: ReadonlyArray<ResolvedConfigFileName>,
|
||||
buildResult: BuildResultFlags
|
||||
) {
|
||||
// Queue only if there are no errors
|
||||
@@ -1913,7 +1913,7 @@ namespace ts {
|
||||
);
|
||||
}
|
||||
|
||||
function startWatching(state: SolutionBuilderState, buildOrder: readonly ResolvedConfigFileName[]) {
|
||||
function startWatching(state: SolutionBuilderState, buildOrder: ReadonlyArray<ResolvedConfigFileName>) {
|
||||
if (!state.watchAllProjectsPending) return;
|
||||
state.watchAllProjectsPending = false;
|
||||
for (const resolved of buildOrder) {
|
||||
@@ -1990,7 +1990,7 @@ namespace ts {
|
||||
reportAndStoreErrors(state, proj, [state.configFileCache.get(proj) as Diagnostic]);
|
||||
}
|
||||
|
||||
function reportErrorSummary(state: SolutionBuilderState, buildOrder: readonly ResolvedConfigFileName[]) {
|
||||
function reportErrorSummary(state: SolutionBuilderState, buildOrder: ReadonlyArray<ResolvedConfigFileName>) {
|
||||
if (!state.needsSummary || (!state.watch && !state.host.reportErrorSummary)) return;
|
||||
state.needsSummary = false;
|
||||
const { diagnostics } = state;
|
||||
@@ -2014,7 +2014,7 @@ namespace ts {
|
||||
/**
|
||||
* Report the build ordering inferred from the current project graph if we're in verbose mode
|
||||
*/
|
||||
function reportBuildQueue(state: SolutionBuilderState, buildQueue: readonly ResolvedConfigFileName[]) {
|
||||
function reportBuildQueue(state: SolutionBuilderState, buildQueue: ReadonlyArray<ResolvedConfigFileName>) {
|
||||
if (state.options.verbose) {
|
||||
reportStatus(state, Diagnostics.Projects_in_this_build_Colon_0, buildQueue.map(s => "\r\n * " + relName(state, s)).join(""));
|
||||
}
|
||||
|
||||
@@ -3039,8 +3039,8 @@ namespace ts {
|
||||
|
||||
/*@internal*/
|
||||
export interface EmitTransformers {
|
||||
scriptTransformers: readonly TransformerFactory<SourceFile | Bundle>[];
|
||||
declarationTransformers: readonly TransformerFactory<SourceFile | Bundle>[];
|
||||
scriptTransformers: ReadonlyArray<TransformerFactory<SourceFile | Bundle>>;
|
||||
declarationTransformers: ReadonlyArray<TransformerFactory<SourceFile | Bundle>>;
|
||||
}
|
||||
|
||||
export interface SourceMapSpan {
|
||||
@@ -6098,7 +6098,7 @@ namespace ts {
|
||||
(U extends any ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
|
||||
|
||||
/* @internal */
|
||||
type ArgumentDefinitionToFieldUnion<T extends readonly PragmaArgumentSpecification<any>[]> = {
|
||||
type ArgumentDefinitionToFieldUnion<T extends ReadonlyArray<PragmaArgumentSpecification<any>>> = {
|
||||
[K in keyof T]: PragmaArgTypeOptional<T[K], T[K] extends {name: infer TName} ? TName extends string ? TName : never : never>
|
||||
}[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
|
||||
|
||||
@@ -6107,7 +6107,7 @@ namespace ts {
|
||||
*/
|
||||
/* @internal */
|
||||
type PragmaArgumentType<KPrag extends keyof ConcretePragmaSpecs> =
|
||||
ConcretePragmaSpecs[KPrag] extends { args: readonly PragmaArgumentSpecification<any>[] }
|
||||
ConcretePragmaSpecs[KPrag] extends { args: ReadonlyArray<PragmaArgumentSpecification<any>> }
|
||||
? UnionToIntersection<ArgumentDefinitionToFieldUnion<ConcretePragmaSpecs[KPrag]["args"]>>
|
||||
: never;
|
||||
|
||||
|
||||
2
src/lib/es2019.object.d.ts
vendored
2
src/lib/es2019.object.d.ts
vendored
@@ -11,5 +11,5 @@ interface ObjectConstructor {
|
||||
* Returns an object created by key-value entries for properties and methods
|
||||
* @param entries An iterable object that contains key-value entries for properties and methods.
|
||||
*/
|
||||
fromEntries(entries: Iterable<readonly any[]>): any;
|
||||
fromEntries(entries: Iterable<ReadonlyArray<any>>): any;
|
||||
}
|
||||
|
||||
4
src/lib/es5.d.ts
vendored
4
src/lib/es5.d.ts
vendored
@@ -1341,8 +1341,8 @@ interface ArrayConstructor {
|
||||
(arrayLength?: number): any[];
|
||||
<T>(arrayLength: number): T[];
|
||||
<T>(...items: T[]): T[];
|
||||
isArray(arg: any): arg is Array<any>;
|
||||
readonly prototype: Array<any>;
|
||||
isArray(arg: any): arg is any[];
|
||||
readonly prototype: any[];
|
||||
}
|
||||
|
||||
declare var Array: ArrayConstructor;
|
||||
|
||||
@@ -82,13 +82,13 @@ declare const console: { log(msg: any): void; };`;
|
||||
return fs;
|
||||
}
|
||||
|
||||
export function verifyOutputsPresent(fs: vfs.FileSystem, outputs: readonly string[]) {
|
||||
export function verifyOutputsPresent(fs: vfs.FileSystem, outputs: ReadonlyArray<string>) {
|
||||
for (const output of outputs) {
|
||||
assert(fs.existsSync(output), `Expect file ${output} to exist`);
|
||||
}
|
||||
}
|
||||
|
||||
export function verifyOutputsAbsent(fs: vfs.FileSystem, outputs: readonly string[]) {
|
||||
export function verifyOutputsAbsent(fs: vfs.FileSystem, outputs: ReadonlyArray<string>) {
|
||||
for (const output of outputs) {
|
||||
assert.isFalse(fs.existsSync(output), `Expect file ${output} to not exist`);
|
||||
}
|
||||
|
||||
@@ -407,8 +407,8 @@ namespace ts {
|
||||
|
||||
function verifyBuildNextResult(
|
||||
expected: SolutionBuilderResult<ExitStatus> | undefined,
|
||||
presentOutputs: readonly string[],
|
||||
absentOutputs: readonly string[]
|
||||
presentOutputs: ReadonlyArray<string>,
|
||||
absentOutputs: ReadonlyArray<string>
|
||||
) {
|
||||
const project = builder.getNextInvalidatedProject();
|
||||
const result = project && project.done();
|
||||
|
||||
7
tsconfig.eslint.json
Normal file
7
tsconfig.eslint.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"extends": "./src/tsconfig-base.json",
|
||||
"include": [
|
||||
"src/**/*.ts",
|
||||
"scripts/**/*.ts",
|
||||
]
|
||||
}
|
||||
Reference in New Issue
Block a user