From fd415214219476754bd89c2f707b0e794451a076 Mon Sep 17 00:00:00 2001 From: Andy Date: Thu, 2 Nov 2017 17:16:09 -0700 Subject: [PATCH] Enable 'callable-types' tslint rule (#19654) --- src/compiler/resolutionCache.ts | 5 ++--- src/compiler/scanner.ts | 4 +--- src/compiler/types.ts | 18 ++++++++--------- src/harness/harness.ts | 12 ++++++++--- src/server/editorServices.ts | 4 +--- src/server/project.ts | 4 +--- .../formatting/ruleOperationContext.ts | 4 ++-- .../reference/api/tsserverlibrary.d.ts | 20 ++++++------------- tests/baselines/reference/api/typescript.d.ts | 8 ++------ tslint.json | 1 - 10 files changed, 33 insertions(+), 47 deletions(-) diff --git a/src/compiler/resolutionCache.ts b/src/compiler/resolutionCache.ts index edc66df8fa3..e21e81a2e88 100644 --- a/src/compiler/resolutionCache.ts +++ b/src/compiler/resolutionCache.ts @@ -69,9 +69,8 @@ namespace ts { export const maxNumberOfFilesToIterateForInvalidation = 256; - interface GetResolutionWithResolvedFileName { - (resolution: T): R; - } + type GetResolutionWithResolvedFileName = + (resolution: T) => R; export function createResolutionCache(resolutionHost: ResolutionCacheHost, rootDirForResolution: string): ResolutionCache { let filesWithChangedSetOfUnresolvedImports: Path[] | undefined; diff --git a/src/compiler/scanner.ts b/src/compiler/scanner.ts index 521a1983254..fa6a50ec51d 100644 --- a/src/compiler/scanner.ts +++ b/src/compiler/scanner.ts @@ -2,9 +2,7 @@ /// namespace ts { - export interface ErrorCallback { - (message: DiagnosticMessage, length: number): void; - } + export type ErrorCallback = (message: DiagnosticMessage, length: number) => void; /* @internal */ export function tokenIsIdentifierOrKeyword(token: SyntaxKind): boolean { diff --git a/src/compiler/types.ts b/src/compiler/types.ts index 549c0f8d52f..1fda7d8f49d 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -2471,9 +2471,13 @@ namespace ts { readFile(path: string): string | undefined; } - export interface WriteFileCallback { - (fileName: string, data: string, writeByteOrderMark: boolean, onError: ((message: string) => void) | undefined, sourceFiles: ReadonlyArray): void; - } + export type WriteFileCallback = ( + fileName: string, + data: string, + writeByteOrderMark: boolean, + onError: ((message: string) => void) | undefined, + sourceFiles: ReadonlyArray, + ) => void; export class OperationCanceledException { } @@ -3582,9 +3586,7 @@ namespace ts { } /* @internal */ - export interface TypeMapper { - (t: TypeParameter): Type; - } + export type TypeMapper = (t: TypeParameter) => Type; export const enum InferencePriority { Contravariant = 1 << 0, // Inference from contravariant position @@ -4192,9 +4194,7 @@ namespace ts { } /* @internal */ - export interface HasInvalidatedResolution { - (sourceFile: Path): boolean; - } + export type HasInvalidatedResolution = (sourceFile: Path) => boolean; export interface CompilerHost extends ModuleResolutionHost { getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void, shouldCreateNewSourceFile?: boolean): SourceFile | undefined; diff --git a/src/harness/harness.ts b/src/harness/harness.ts index c6caeff0dd9..d5159b5c5f5 100644 --- a/src/harness/harness.ts +++ b/src/harness/harness.ts @@ -784,9 +784,15 @@ namespace Harness { ? IO.newLine() + `//# sourceURL=${IO.resolvePath(tcServicesFileName)}` : ""); - export interface SourceMapEmitterCallback { - (emittedFile: string, emittedLine: number, emittedColumn: number, sourceFile: string, sourceLine: number, sourceColumn: number, sourceName: string): void; - } + export type SourceMapEmitterCallback = ( + emittedFile: string, + emittedLine: number, + emittedColumn: number, + sourceFile: string, + sourceLine: number, + sourceColumn: number, + sourceName: string, + ) => void; // Settings export let userSpecifiedRoot = ""; diff --git a/src/server/editorServices.ts b/src/server/editorServices.ts index 35f888ebc7d..9ec190c152f 100644 --- a/src/server/editorServices.ts +++ b/src/server/editorServices.ts @@ -78,9 +78,7 @@ namespace ts.server { export type ProjectServiceEvent = ProjectsUpdatedInBackgroundEvent | ConfigFileDiagEvent | ProjectLanguageServiceStateEvent | ProjectInfoTelemetryEvent; - export interface ProjectServiceEventHandler { - (event: ProjectServiceEvent): void; - } + export type ProjectServiceEventHandler = (event: ProjectServiceEvent) => void; export interface SafeList { [name: string]: { match: RegExp, exclude?: (string | number)[][], types?: string[] }; diff --git a/src/server/project.ts b/src/server/project.ts index 0e1e7ac2cab..0444e9304b5 100644 --- a/src/server/project.ts +++ b/src/server/project.ts @@ -98,9 +98,7 @@ namespace ts.server { getExternalFiles?(proj: Project): string[]; } - export interface PluginModuleFactory { - (mod: { typescript: typeof ts }): PluginModule; - } + export type PluginModuleFactory = (mod: { typescript: typeof ts }) => PluginModule; /** * The project root can be script info - if root is present, diff --git a/src/services/formatting/ruleOperationContext.ts b/src/services/formatting/ruleOperationContext.ts index bf96363ad7d..f03b19516d5 100644 --- a/src/services/formatting/ruleOperationContext.ts +++ b/src/services/formatting/ruleOperationContext.ts @@ -4,9 +4,9 @@ namespace ts.formatting { export class RuleOperationContext { - private readonly customContextChecks: { (context: FormattingContext): boolean; }[]; + private readonly customContextChecks: ((context: FormattingContext) => boolean)[]; - constructor(...funcs: { (context: FormattingContext): boolean; }[]) { + constructor(...funcs: ((context: FormattingContext) => boolean)[]) { this.customContextChecks = funcs; } diff --git a/tests/baselines/reference/api/tsserverlibrary.d.ts b/tests/baselines/reference/api/tsserverlibrary.d.ts index 7fbff83009f..2bce9cbf49a 100644 --- a/tests/baselines/reference/api/tsserverlibrary.d.ts +++ b/tests/baselines/reference/api/tsserverlibrary.d.ts @@ -1623,9 +1623,7 @@ declare namespace ts { fileExists(path: string): boolean; readFile(path: string): string | undefined; } - interface WriteFileCallback { - (fileName: string, data: string, writeByteOrderMark: boolean, onError: ((message: string) => void) | undefined, sourceFiles: ReadonlyArray): void; - } + type WriteFileCallback = (fileName: string, data: string, writeByteOrderMark: boolean, onError: ((message: string) => void) | undefined, sourceFiles: ReadonlyArray) => void; class OperationCanceledException { } interface CancellationToken { @@ -3095,9 +3093,7 @@ declare namespace ts { function isGetAccessor(node: Node): node is GetAccessorDeclaration; } declare namespace ts { - interface ErrorCallback { - (message: DiagnosticMessage, length: number): void; - } + type ErrorCallback = (message: DiagnosticMessage, length: number) => void; interface Scanner { getStartPos(): number; getToken(): SyntaxKind; @@ -7144,11 +7140,9 @@ declare namespace ts.server { create(createInfo: PluginCreateInfo): LanguageService; getExternalFiles?(proj: Project): string[]; } - interface PluginModuleFactory { - (mod: { - typescript: typeof ts; - }): PluginModule; - } + type PluginModuleFactory = (mod: { + typescript: typeof ts; + }) => PluginModule; /** * The project root can be script info - if root is present, * or it could be just normalized path if root wasnt present on the host(only for non inferred project) @@ -7418,9 +7412,7 @@ declare namespace ts.server { readonly dts: number; } type ProjectServiceEvent = ProjectsUpdatedInBackgroundEvent | ConfigFileDiagEvent | ProjectLanguageServiceStateEvent | ProjectInfoTelemetryEvent; - interface ProjectServiceEventHandler { - (event: ProjectServiceEvent): void; - } + type ProjectServiceEventHandler = (event: ProjectServiceEvent) => void; interface SafeList { [name: string]: { match: RegExp; diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 73d069757df..48105ea7d12 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -1623,9 +1623,7 @@ declare namespace ts { fileExists(path: string): boolean; readFile(path: string): string | undefined; } - interface WriteFileCallback { - (fileName: string, data: string, writeByteOrderMark: boolean, onError: ((message: string) => void) | undefined, sourceFiles: ReadonlyArray): void; - } + type WriteFileCallback = (fileName: string, data: string, writeByteOrderMark: boolean, onError: ((message: string) => void) | undefined, sourceFiles: ReadonlyArray) => void; class OperationCanceledException { } interface CancellationToken { @@ -2758,9 +2756,7 @@ declare namespace ts { let sys: System; } declare namespace ts { - interface ErrorCallback { - (message: DiagnosticMessage, length: number): void; - } + type ErrorCallback = (message: DiagnosticMessage, length: number) => void; interface Scanner { getStartPos(): number; getToken(): SyntaxKind; diff --git a/tslint.json b/tslint.json index 13c9e161958..197dc43729d 100644 --- a/tslint.json +++ b/tslint.json @@ -76,7 +76,6 @@ "arrow-return-shorthand": false, "ban-comma-operator": false, "ban-types": false, - "callable-types": false, "forin": false, "member-access": false, // [true, "no-public"] "no-conditional-assignment": false,