diff --git a/packages/babel-types/scripts/generators/validators.js b/packages/babel-types/scripts/generators/validators.js index c165f763842e..d77fe3b0a952 100644 --- a/packages/babel-types/scripts/generators/validators.js +++ b/packages/babel-types/scripts/generators/validators.js @@ -48,7 +48,7 @@ function addIsHelper(type, aliasKeys, deprecated) { return `export function is${type}(${ BABEL8 - ? `node: t.Node | null | undefined, opts?: Partial | null` + ? `node: t.Node | null | undefined, opts?: Opts | null` : "node: object | null | undefined, opts?: object | null" }): ${result} { ${deprecated || ""} @@ -81,6 +81,16 @@ import shallowEqual from "../../utils/shallowEqual"; import type * as t from "../.."; import deprecationWarning from "../../utils/deprecationWarning"; \n`; + if (BABEL8) { + output += `type Opts = Partial<{ + [Prop in keyof Object]: Object[Prop] extends t.Node + ? t.Node | Object[Prop] + : Object[Prop] extends t.Node[] + ? t.Node[] | Object[Prop] + : Object[Prop]; +}>; +\n`; + } Object.keys(VISITOR_KEYS).forEach(type => { output += addIsHelper(type); @@ -109,7 +119,7 @@ ${addIsHelper(type, null, `deprecationWarning("is${type}", "is${newType}")`)}`; */ export function is${type}(${ BABEL8 - ? `node: t.Node | null | undefined, opts?: Partial | null` + ? `node: t.Node | null | undefined, opts?: Opts | null` : "node: object | null | undefined, opts?: object | null" }): node is t.${newType} { deprecationWarning("is${type}", "is${newType}");