From a6df6c04d5dd16ecb031aba0d7499f6e9be940b6 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Thu, 27 Jul 2023 15:58:17 -0700 Subject: [PATCH] Enable @typescript-eslint/ban-types (#55133) --- .eslintrc.json | 13 ++++++++++++- src/compiler/sys.ts | 2 +- src/harness/fourslashImpl.ts | 4 ++-- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/.eslintrc.json b/.eslintrc.json index 1483ba5933f..3de10f41233 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -89,9 +89,20 @@ "@typescript-eslint/no-var-requires": "off", "@typescript-eslint/no-empty-interface": "off", "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/ban-types": [ + "error", + { + "extendDefaults": true, + "types": { + // This is theoretically good, but ts-eslint appears to mistake our declaration of Symbol for the global Symbol type. + // See: https://github.com/typescript-eslint/typescript-eslint/issues/7306 + "Symbol": false, + "{}": false // {} is a totally useful and valid type. + } + } + ], // Todo: For each of these, investigate whether we want to enable them ✨ - "@typescript-eslint/ban-types": "off", "no-useless-escape": "off", "prefer-rest-params": "off", "prefer-spread": "off", diff --git a/src/compiler/sys.ts b/src/compiler/sys.ts index b7b73d41583..db12d3a6dd9 100644 --- a/src/compiler/sys.ts +++ b/src/compiler/sys.ts @@ -1711,7 +1711,7 @@ export let sys: System = (() => { function bufferFrom(input: string, encoding?: string): Buffer { // See https://github.com/Microsoft/TypeScript/issues/25652 - return Buffer.from && (Buffer.from as Function) !== Int8Array.from + return Buffer.from && Buffer.from !== Int8Array.from ? Buffer.from(input, encoding) : new Buffer(input, encoding); } diff --git a/src/harness/fourslashImpl.ts b/src/harness/fourslashImpl.ts index b6ab758e7eb..6927acdbd3a 100644 --- a/src/harness/fourslashImpl.ts +++ b/src/harness/fourslashImpl.ts @@ -442,11 +442,11 @@ export class TestState { for (const k of keys) { const key = k as keyof typeof ls; if (cacheableMembers.indexOf(key) === -1) { - proxy[key] = (...args: any[]) => (ls[key] as Function)(...args); + proxy[key] = (...args: any[]) => (ls[key] as (...args: any[]) => any)(...args); continue; } const memo = Utils.memoize( - (_version: number, _active: string, _caret: number, _selectEnd: number, _marker: string | undefined, ...args: any[]) => (ls[key] as Function)(...args), + (_version: number, _active: string, _caret: number, _selectEnd: number, _marker: string | undefined, ...args: any[]) => (ls[key] as (...args: any[]) => any)(...args), (...args) => args.map(a => a && typeof a === "object" ? JSON.stringify(a) : a).join("|,|") ); proxy[key] = (...args: any[]) => memo(