diff --git a/packages/babel-types/src/definitions/typescript.js b/packages/babel-types/src/definitions/typescript.js index 843f2408ecc9..9f0625d12320 100644 --- a/packages/babel-types/src/definitions/typescript.js +++ b/packages/babel-types/src/definitions/typescript.js @@ -494,6 +494,7 @@ defineType("TSTypeParameterDeclaration", { }); defineType("TSTypeParameter", { + builder: ["constraint", "default", "name"], visitor: ["constraint", "default"], fields: { name: { diff --git a/packages/babel-types/test/builders/typescript/__snapshots__/tsTypeParameter.js.snap b/packages/babel-types/test/builders/typescript/__snapshots__/tsTypeParameter.js.snap new file mode 100644 index 000000000000..51940ca2d50a --- /dev/null +++ b/packages/babel-types/test/builders/typescript/__snapshots__/tsTypeParameter.js.snap @@ -0,0 +1,24 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`builders typescript tsTypeParameter accept name as argument for tsTypeParameter 1`] = ` +Object { + "constraint": Object { + "type": "TSTypeReference", + "typeName": Object { + "name": "bar", + "type": "Identifier", + }, + "typeParameters": null, + }, + "default": Object { + "type": "TSTypeReference", + "typeName": Object { + "name": "baz", + "type": "Identifier", + }, + "typeParameters": null, + }, + "name": "foo", + "type": "TSTypeParameter", +} +`; diff --git a/packages/babel-types/test/builders/typescript/tsTypeParameter.js b/packages/babel-types/test/builders/typescript/tsTypeParameter.js new file mode 100644 index 000000000000..985d67909c2a --- /dev/null +++ b/packages/babel-types/test/builders/typescript/tsTypeParameter.js @@ -0,0 +1,24 @@ +import * as t from "../../.."; + +describe("builders", function() { + describe("typescript", function() { + describe("tsTypeParameter", function() { + it("accept name as argument for tsTypeParameter", function() { + const tsTypeParameter = t.tsTypeParameter( + t.tsTypeReference(t.identifier("bar")), + t.tsTypeReference(t.identifier("baz")), + "foo", + ); + expect(tsTypeParameter).toMatchSnapshot(); + }); + it("throws when name is missing", function() { + expect(() => { + t.tsTypeParameter( + t.tsTypeReference(t.identifier("bar")), + t.tsTypeReference(t.identifier("baz")), + ); + }).toThrow("Property name expected type of string but got null"); + }); + }); + }); +});