From b0d4378a07c20bd38eaafa35f0875b3b92912986 Mon Sep 17 00:00:00 2001 From: "Kent C. Dodds" Date: Wed, 14 Aug 2019 16:01:29 -0600 Subject: [PATCH] add typescript --- .babelrc | 5 ++-- package-lock.json | 50 +++++++++++++++++++++++++++++++++++++++ package.json | 11 +++++---- src/typescript-example.js | 14 ----------- src/typescript-example.ts | 21 ++++++++++++++++ tsconfig.json | 6 +++++ 6 files changed, 87 insertions(+), 20 deletions(-) delete mode 100644 src/typescript-example.js create mode 100644 src/typescript-example.ts create mode 100644 tsconfig.json diff --git a/.babelrc b/.babelrc index 0822823..fa51156 100644 --- a/.babelrc +++ b/.babelrc @@ -7,6 +7,7 @@ "node": "10" } } - ] + ], + "@babel/preset-typescript" ] -} \ No newline at end of file +} diff --git a/package-lock.json b/package-lock.json index a6f1117..dc368f6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -110,6 +110,20 @@ "@babel/types": "^7.7.0" } }, + "@babel/helper-create-class-features-plugin": { + "version": "7.7.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.7.0.tgz", + "integrity": "sha512-MZiB5qvTWoyiFOgootmRSDV1udjIqJW/8lmxgzKq6oDqxdmHUjeP2ZUOmgHdYjmUVNABqRrHjYAYRvj8Eox/UA==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.7.0", + "@babel/helper-member-expression-to-functions": "^7.7.0", + "@babel/helper-optimise-call-expression": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/helper-replace-supers": "^7.7.0", + "@babel/helper-split-export-declaration": "^7.7.0" + } + }, "@babel/helper-create-regexp-features-plugin": { "version": "7.7.2", "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.7.2.tgz", @@ -425,6 +439,15 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-syntax-typescript": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.3.3.tgz", + "integrity": "sha512-dGwbSMA1YhVS8+31CnPR7LB4pcbrzcV99wQzby4uAfrkZPYZlQ7ImwdpzLqi6Z6IL02b8IAL379CaMwo0x5Lag==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0" + } + }, "@babel/plugin-transform-arrow-functions": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.2.0.tgz", @@ -721,6 +744,17 @@ "@babel/helper-plugin-utils": "^7.0.0" } }, + "@babel/plugin-transform-typescript": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.7.2.tgz", + "integrity": "sha512-UWhDaJRqdPUtdK1s0sKYdoRuqK0NepjZto2UZltvuCgMoMZmdjhgz5hcRokie/3aYEaSz3xvusyoayVaq4PjRg==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.7.0", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-syntax-typescript": "^7.2.0" + } + }, "@babel/plugin-transform-unicode-regex": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.7.0.tgz", @@ -790,6 +824,16 @@ "semver": "^5.5.0" } }, + "@babel/preset-typescript": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.7.2.tgz", + "integrity": "sha512-1B4HthAelaLGfNRyrWqJtBEjXX1ulThCrLQ5B2VOtEAznWFIFXFJahgXImqppy66lx/Oh+cOSCQdJzZqh2Jh5g==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-transform-typescript": "^7.7.2" + } + }, "@babel/template": { "version": "7.7.0", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.7.0.tgz", @@ -3894,6 +3938,12 @@ "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==", "dev": true }, + "typescript": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.7.2.tgz", + "integrity": "sha512-ml7V7JfiN2Xwvcer+XAf2csGO1bPBdRbFCkYBczNZggrBZ9c7G3riSUeJmqEU5uOtXNPMhE3n+R4FA/3YOAWOQ==", + "dev": true + }, "unicode-canonical-property-names-ecmascript": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", diff --git a/package.json b/package.json index 3e044c9..d27752a 100644 --- a/package.json +++ b/package.json @@ -4,19 +4,22 @@ "author": "Kent C. Dodds (http://kentcdodds.com/)", "license": "GPLv3", "scripts": { - "build": "babel src --out-dir dist", + "build": "babel src --extensions .js,.ts,.tsx --out-dir dist", "lint": "eslint --ignore-path .gitignore .", - "prettier": "prettier --ignore-path .gitignore \"**/*.+(js|json)\"", + "check-types": "tsc", + "prettier": "prettier --ignore-path .gitignore \"**/*.+(js|json|ts|tsx)\"", "format": "npm run prettier -- --write", "check-format": "npm run prettier -- --list-different", - "validate": "npm run check-format && npm run lint && npm run build" + "validate": "npm run check-types && npm run check-format && npm run lint && npm run build" }, "devDependencies": { "@babel/cli": "^7.7.0", "@babel/core": "^7.7.2", "@babel/preset-env": "^7.7.1", + "@babel/preset-typescript": "^7.7.2", "eslint": "^6.6.0", "eslint-config-prettier": "^6.5.0", - "prettier": "^1.19.1" + "prettier": "^1.19.1", + "typescript": "^3.7.2" } } diff --git a/src/typescript-example.js b/src/typescript-example.js deleted file mode 100644 index 796b3ec..0000000 --- a/src/typescript-example.js +++ /dev/null @@ -1,14 +0,0 @@ -function add(a, b) { - return a + b -} - -function getFullName(user) { - const { - name: {first, middle, last}, - } = user - return [first, middle, last].filter(Boolean).join('') -} - -add(1, 'two') - -getFullName({name: {first: 'Joe', midd1e: 'Bud', last: 'Matthews'}}) diff --git a/src/typescript-example.ts b/src/typescript-example.ts new file mode 100644 index 0000000..1411db7 --- /dev/null +++ b/src/typescript-example.ts @@ -0,0 +1,21 @@ +function add(a: number, b: number): number { + return a + b +} + +interface User { + name: { + first: string + middle: string + last: string + } +} +function getFullName(user: User): string { + const { + name: {first, middle, last}, + } = user + return [first, middle, last].filter(Boolean).join('') +} + +add(1, 2) + +getFullName({name: {first: 'Joe', middle: 'Bud', last: 'Matthews'}}) diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..196505b --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "noEmit": true, + "baseUrl": "./src" + } +}