Skip to content

Commit

Permalink
improve babel-template typings (#14621)
Browse files Browse the repository at this point in the history
  • Loading branch information
liuxingbaoyu authored and JLHwung committed Jun 21, 2022
1 parent 000086d commit 88378e2
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 10 deletions.
6 changes: 3 additions & 3 deletions packages/babel-template/src/builder.ts
Expand Up @@ -13,15 +13,15 @@ export type TemplateBuilder<T> = {
(tpl: string, opts?: PublicOpts): (replacements?: PublicReplacements) => T;

// Building from a template literal produces an AST builder function by default.
(tpl: TemplateStringsArray, ...args: Array<any>): (
(tpl: TemplateStringsArray, ...args: Array<unknown>): (
replacements?: PublicReplacements,
) => T;

// Allow users to explicitly create templates that produce ASTs, skipping
// the need for an intermediate function.
ast: {
(tpl: string, opts?: PublicOpts): T;
(tpl: TemplateStringsArray, ...args: Array<any>): T;
(tpl: TemplateStringsArray, ...args: Array<unknown>): T;
};
};

Expand Down Expand Up @@ -66,7 +66,7 @@ export default function createTemplateBuilder<T>(
throw new Error(`Unexpected template param ${typeof tpl}`);
}) as TemplateBuilder<T>,
{
ast: (tpl, ...args) => {
ast: (tpl: string | Array<string>, ...args: Array<unknown>) => {
if (typeof tpl === "string") {
if (args.length > 1) throw new Error("Unexpected extra params.");
return stringTemplate(
Expand Down
2 changes: 1 addition & 1 deletion packages/babel-template/src/literal.ts
Expand Up @@ -46,7 +46,7 @@ function buildLiteralData<T>(
opts: TemplateOpts,
) {
let names;
let nameSet;
let nameSet: Set<string>;
let metadata;
let prefix = "";

Expand Down
10 changes: 5 additions & 5 deletions packages/babel-template/src/parse.ts
Expand Up @@ -54,15 +54,15 @@ export default function parseAndBuildMetadata<T>(

formatter.validate(ast);

const syntactic = {
const syntactic: MetadataState["syntactic"] = {
placeholders: [],
placeholderNames: new Set<string>(),
placeholderNames: new Set(),
};
const legacy = {
const legacy: MetadataState["legacy"] = {
placeholders: [],
placeholderNames: new Set<string>(),
placeholderNames: new Set(),
};
const isLegacyRef = { value: undefined };
const isLegacyRef: MetadataState["isLegacyRef"] = { value: undefined };

traverse(ast, placeholderVisitorHandler as TraversalHandler<any>, {
syntactic,
Expand Down
3 changes: 2 additions & 1 deletion 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";
Expand All @@ -11,7 +12,7 @@ export default function stringTemplate<T>(
): (arg?: unknown) => T {
code = formatter.code(code);

let metadata;
let metadata: Metadata;

return (arg?: unknown) => {
const replacements = normalizeReplacements(arg);
Expand Down

0 comments on commit 88378e2

Please sign in to comment.