I guess I have to learn TypeScript now.
Here's how I got started in as few steps as possible, with the help of Get Started With Typescript in 2019 by Robert Cooper.
I created a new project:
mkdir -p ~/Dropbox/Learning-TypeScript/first-typescript
cd ~/Dropbox/Learning-TypeScript/first-typescript
Then installed the TypeScript compiler:
npm install --save-dev typescript
Using --global
instead of --save-dev
would have installed in globally, but I'm not ready for that kind of commitment yet!
Apparently I need a tsconfig.json
file. Running this command creates one for me containing some suggested defaults:
% ./node_modules/.bin/tsc --init
Next step: create a .ts
file to start testing it out. I put the following in greetings.ts
:
const greeting = (person: string) => {
console.log("Hello " + person);
};
greeting("Simon");
Next, compile it! Thanks to npm install --save-dev typescript
the tsc
compiler is now available here:
% ./node_modules/.bin/tsc
Run without any arguments it seeks out the tsconfig.json
file, compiles any .ts
files and produces matching .js
files.
That seems to have worked:
% node greetings.js
Good day Simon
% cat greetings.js
"use strict";
var greeting = function (person) {
console.log("Good day " + person);
};
greeting("Simon");
The --watch
command continues to run and automatically compiles files when they are saved:
% ./node_modules/.bin/tsc --watch
[9:32:44 AM] Starting compilation in watch mode...
[9:32:44 AM] Found 0 errors. Watching for file changes.
I changed the last line of my greetings.ts
file to greeting(1)
(a type error) to see what happened:
[9:33:56 AM] File change detected. Starting incremental compilation...
greetings.ts:5:10 - error TS2345: Argument of type 'number' is not assignable to parameter of type 'string'.
5 greeting(1);
~
[9:33:56 AM] Found 1 error. Watching for file changes.
Tip from @Benjie: you can use npx to avoid the ./node_modules/.bin
prefix. I had thought that npx
installed and ran a new global version, but it turns out it will notice your node_modules
folder and run from that instead if one exists:
% npx tsc --watch
VSCode has built-in TypeScript support. Hit Shift+Command+B and select the tsc: watch
option and it runs that watch command in a embedded terminal pane inside the editor itself.
Created 2020-09-06T09:36:03-07:00, updated 2020-10-09T19:52:44-07:00 · History · Edit