From 88378e2d53d40fa998913d5bee3c1ae7ec87e982 Mon Sep 17 00:00:00 2001 From: liuxingbaoyu <30521560+liuxingbaoyu@users.noreply.github.com> Date: Tue, 31 May 2022 07:05:39 +0800 Subject: [PATCH] improve babel-template typings (#14621) --- packages/babel-template/src/builder.ts | 6 +++--- packages/babel-template/src/literal.ts | 2 +- packages/babel-template/src/parse.ts | 10 +++++----- packages/babel-template/src/string.ts | 3 ++- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/packages/babel-template/src/builder.ts b/packages/babel-template/src/builder.ts index 7040f81595e2..e3acc3878da4 100644 --- a/packages/babel-template/src/builder.ts +++ b/packages/babel-template/src/builder.ts @@ -13,7 +13,7 @@ export type TemplateBuilder = { (tpl: string, opts?: PublicOpts): (replacements?: PublicReplacements) => T; // Building from a template literal produces an AST builder function by default. - (tpl: TemplateStringsArray, ...args: Array): ( + (tpl: TemplateStringsArray, ...args: Array): ( replacements?: PublicReplacements, ) => T; @@ -21,7 +21,7 @@ export type TemplateBuilder = { // the need for an intermediate function. ast: { (tpl: string, opts?: PublicOpts): T; - (tpl: TemplateStringsArray, ...args: Array): T; + (tpl: TemplateStringsArray, ...args: Array): T; }; }; @@ -66,7 +66,7 @@ export default function createTemplateBuilder( throw new Error(`Unexpected template param ${typeof tpl}`); }) as TemplateBuilder, { - ast: (tpl, ...args) => { + ast: (tpl: string | Array, ...args: Array) => { if (typeof tpl === "string") { if (args.length > 1) throw new Error("Unexpected extra params."); return stringTemplate( diff --git a/packages/babel-template/src/literal.ts b/packages/babel-template/src/literal.ts index c436edcbd8db..c6e79a1fcc8f 100644 --- a/packages/babel-template/src/literal.ts +++ b/packages/babel-template/src/literal.ts @@ -46,7 +46,7 @@ function buildLiteralData( opts: TemplateOpts, ) { let names; - let nameSet; + let nameSet: Set; let metadata; let prefix = ""; diff --git a/packages/babel-template/src/parse.ts b/packages/babel-template/src/parse.ts index e57d5b87a273..2fd61025ac2f 100644 --- a/packages/babel-template/src/parse.ts +++ b/packages/babel-template/src/parse.ts @@ -54,15 +54,15 @@ export default function parseAndBuildMetadata( formatter.validate(ast); - const syntactic = { + const syntactic: MetadataState["syntactic"] = { placeholders: [], - placeholderNames: new Set(), + placeholderNames: new Set(), }; - const legacy = { + const legacy: MetadataState["legacy"] = { placeholders: [], - placeholderNames: new Set(), + placeholderNames: new Set(), }; - const isLegacyRef = { value: undefined }; + const isLegacyRef: MetadataState["isLegacyRef"] = { value: undefined }; traverse(ast, placeholderVisitorHandler as TraversalHandler, { syntactic, diff --git a/packages/babel-template/src/string.ts b/packages/babel-template/src/string.ts index 1f8ad4c9f783..10f26fb64ebe 100644 --- a/packages/babel-template/src/string.ts +++ b/packages/babel-template/src/string.ts @@ -1,5 +1,6 @@ import type { Formatter } from "./formatters"; import type { TemplateOpts } from "./options"; +import type { Metadata } from "./parse"; import { normalizeReplacements } from "./options"; import parseAndBuildMetadata from "./parse"; import populatePlaceholders from "./populate"; @@ -11,7 +12,7 @@ export default function stringTemplate( ): (arg?: unknown) => T { code = formatter.code(code); - let metadata; + let metadata: Metadata; return (arg?: unknown) => { const replacements = normalizeReplacements(arg);