diff --git a/.eslintrc.json b/.eslintrc.json index 1483ba5933f97..3de10f412337a 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 b7b73d4158312..db12d3a6dd96e 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 b6ab758e7ebe3..6927acdbd3afa 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(