diff options
author | Ry Dahl <ry@tinyclouds.org> | 2019-11-14 15:05:36 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-14 15:05:36 -0500 |
commit | 4902a1cacb0348efde9ab342172f2706ac27e837 (patch) | |
tree | abbc0dbdcc03b232d01274cea0940a377223a767 | |
parent | 8b90b8e88325d28fe41d8312ea91417b6e66a12e (diff) |
Turn on TS strict mode for deno_typescript (#3330)
-rw-r--r-- | cli/js/body.ts | 3 | ||||
-rw-r--r-- | cli/js/compiler.ts | 4 | ||||
-rw-r--r-- | cli/js/lib.deno_runtime.d.ts | 8 | ||||
-rw-r--r-- | cli/js/os.ts | 3 | ||||
-rw-r--r-- | cli/js/streams/readable-internals.ts | 2 | ||||
-rw-r--r-- | cli/js/url.ts | 2 | ||||
-rw-r--r-- | deno_typescript/lib.deno_core.d.ts | 2 | ||||
-rw-r--r-- | deno_typescript/lib.rs | 1 | ||||
-rw-r--r-- | std/node/fs.ts | 11 |
9 files changed, 27 insertions, 9 deletions
diff --git a/cli/js/body.ts b/cli/js/body.ts index fc12efa8a..ed21fa0ec 100644 --- a/cli/js/body.ts +++ b/cli/js/body.ts @@ -143,9 +143,10 @@ export class Body implements domTypes.Body { this._stream = this._bodySource; } if (typeof this._bodySource === "string") { + const bodySource = this._bodySource; this._stream = new ReadableStream({ start(controller: ReadableStreamController): void { - controller.enqueue(this._bodySource); + controller.enqueue(bodySource); controller.close(); } }); diff --git a/cli/js/compiler.ts b/cli/js/compiler.ts index 775277cdd..1779f76c3 100644 --- a/cli/js/compiler.ts +++ b/cli/js/compiler.ts @@ -285,7 +285,7 @@ async function processImports( referrer = "" ): Promise<SourceFileJson[]> { if (!specifiers.length) { - return; + return []; } const sources = specifiers.map(([, moduleSpecifier]) => moduleSpecifier); const sourceFiles = await fetchSourceFiles(sources, referrer); @@ -385,6 +385,8 @@ class Host implements ts.CompilerHost { private readonly _options: ts.CompilerOptions = { allowJs: true, allowNonTsExtensions: true, + // TODO(#3324) Enable strict mode for user code. + // strict: true, checkJs: false, esModuleInterop: true, module: ts.ModuleKind.ESNext, diff --git a/cli/js/lib.deno_runtime.d.ts b/cli/js/lib.deno_runtime.d.ts index 87be1c3a0..c7c403987 100644 --- a/cli/js/lib.deno_runtime.d.ts +++ b/cli/js/lib.deno_runtime.d.ts @@ -2858,4 +2858,10 @@ declare namespace WebAssembly { } } -/* eslint-enable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any */ +// Catch-all for JSX elements. +// See https://www.typescriptlang.org/docs/handbook/jsx.html#intrinsic-elements +declare namespace JSX { + interface IntrinsicElements { + [elemName: string]: any; + } +} diff --git a/cli/js/os.ts b/cli/js/os.ts index 89e5652cb..4e17e2030 100644 --- a/cli/js/os.ts +++ b/cli/js/os.ts @@ -95,7 +95,8 @@ export function start(preserveDenoNamespace = true, source?: string): Start { for (const [name, opId] of Object.entries(ops)) { const opName = `OP_${name.toUpperCase()}`; // Assign op ids to actual variables - dispatch[opName] = opId; + // TODO(ry) This type casting is gross and should be fixed. + ((dispatch as unknown) as { [key: string]: number })[opName] = opId; } // First we send an empty `Start` message to let the privileged side know we // are ready. The response should be a `StartRes` message containing the CLI diff --git a/cli/js/streams/readable-internals.ts b/cli/js/streams/readable-internals.ts index 36f4223d7..67f5a69b1 100644 --- a/cli/js/streams/readable-internals.ts +++ b/cli/js/streams/readable-internals.ts @@ -259,7 +259,7 @@ export function isReadableStreamLocked<OutputType>( export function readableStreamGetNumReadIntoRequests<OutputType>( stream: SDReadableStream<OutputType> -): number | undefined { +): number { // TODO remove the "as unknown" cast // This is in to workaround a compiler error // error TS2352: Conversion of type 'SDReadableStreamReader<OutputType>' to type 'SDReadableStreamBYOBReader' may be a mistake because neither type sufficiently overlaps with the other. If this was intentional, convert the expression to 'unknown' first. diff --git a/cli/js/url.ts b/cli/js/url.ts index 2017bb40b..489d8d045 100644 --- a/cli/js/url.ts +++ b/cli/js/url.ts @@ -156,7 +156,7 @@ export class URL { "search" ]; const objectString = keys - .map((key: string) => `${key}: "${this[key] || ""}"`) + .map((key: string) => `${key}: "${this[key as keyof this] || ""}"`) .join(", "); return `URL { ${objectString} }`; } diff --git a/deno_typescript/lib.deno_core.d.ts b/deno_typescript/lib.deno_core.d.ts index c3a20eb08..549665543 100644 --- a/deno_typescript/lib.deno_core.d.ts +++ b/deno_typescript/lib.deno_core.d.ts @@ -21,7 +21,7 @@ interface EvalErrorInfo { } declare interface DenoCore { - print(s: string, isErr?: boolean); + print(s: string, isErr?: boolean): void; dispatch( opId: number, control: Uint8Array, diff --git a/deno_typescript/lib.rs b/deno_typescript/lib.rs index 56072ebdc..e53a4243d 100644 --- a/deno_typescript/lib.rs +++ b/deno_typescript/lib.rs @@ -127,6 +127,7 @@ pub fn compile_bundle( let config_json = serde_json::json!({ "compilerOptions": { + "strict": true, "declaration": true, "lib": ["esnext"], "module": "amd", diff --git a/std/node/fs.ts b/std/node/fs.ts index 01b9e2398..539916c9e 100644 --- a/std/node/fs.ts +++ b/std/node/fs.ts @@ -1,7 +1,14 @@ -import { notImplemented, intoCallbackAPIWithIntercept } from "./_utils.ts"; +import { + notImplemented, + intoCallbackAPIWithIntercept, + MaybeEmpty +} from "./_utils.ts"; const { readFile: denoReadFile, readFileSync: denoReadFileSync } = Deno; -type ReadFileCallback = (err: Error | null, data: string | Uint8Array) => void; +type ReadFileCallback = ( + err: MaybeEmpty<Error>, + data: MaybeEmpty<string | Uint8Array> +) => void; interface ReadFileOptions { encoding?: string | null; |