TypeScript compared to JavaScript is a little bit more complex. If you do server-side JavaScript, you just call node your-script.js and it runs. When you want to use TypeScript, you need to install a few things and do a few steps to make your code runnable.
Make sure you have installed the latest version of
nodejson your system.
Create your project folder, change the current working directory, and install typescript as your development dependency.
npm i -D typescript
Initialize your nodejs project.
npm init
Then use npx to initialize a new typescript project.
npx tsc --init
A bunch of files should be in your project:
- package.json
- package-lock.json
- tsconfig.json
Edit tsconfig.json, find outDir, and change it if you do not want compiled files in your root directory. Change it to the build folder.
...
outDir": "./build", /* Specify an output folder for all emitted files. */
...
Now it's time to create your first TypeScript code.
Create a file index.ts and just put some random code.
async function main() {
const i: number = 1;
console.log('Random stuff', i);
}
main()
Save it and then you can do a manual compilation.
npx tsc
This compiles your project and the output will be stored in the build folder. You will find the file index.js there. Do a test run with node ./build/index.js.
In the console, you should see:
Random stuff 1
You can use npx tsc -w to activate watch mode. When you change anything in your project, it will be recompiled automatically.
To make it a little bit easier, you can edit the scripts property in package.json to merge compilation and run into one command.
...
"scripts": {
"start": "npx tsc && node ./build/index.js"
},
...
When you call npm run start, your project will be compiled and run.
During code development, you should use a linter to check your code using certain rules to avoid code inconsistency. An easy way is to use Google TypeScript Style.
Install gts as a development dependency.
npm i -D gts
Then initialize gts with npx.
npx gts init
It will ask you some questions. If your typescript version is higher than suggested, just say no. Then you will be asked about updating tsconfig.json, say yes.
Some big changes will be made.
The src folder will be created with an index.ts file in it. Remove your old index.ts from the root folder.
In package.json, update your start script.
...
"start": "npx tsc && node ./build/src/index.js",
...
Make sure you have
eslintsupport activated in your editor
You will get an index.ts example file in the src directory. It is all wrong. If you have eslint support activated in your editor, it should scream at you with lots of errors.
console.log("Try npm run lint/fix!");
const longString = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ut aliquet diam.';
const trailing = 'Semicolon'
const why={am:'I tabbed?'};
const iWish = "I didn't have a trailing space...";
const sicilian = true;;
const vizzini = (!!sicilian) ? !!!sicilian : sicilian;
const re = /foo bar/;
export function doSomeStuff(withThis: string, andThat: string, andThose: string[]) {
//function on one line
if(!Boolean(andThose.length)) {return false;}
console.log(withThis);
console.log(andThat);
console.dir(andThose);
console.log(longString, trailing, why, iWish, vizzini, re);
return;
}
// TODO: more examples
Just run npm run fix to let gts fix your code. You will get this:
console.log('Try npm run lint/fix!');
const longString =
'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Integer ut aliquet diam.';
const trailing = 'Semicolon';
const why = {am: 'I tabbed?'};
const iWish = "I didn't have a trailing space...";
const sicilian = true;
const vizzini = sicilian ? !sicilian : sicilian;
const re = /foo {3}bar/;
export function doSomeStuff(
withThis: string,
andThat: string,
andThose: string[]
) {
//function on one line
if (!andThose.length) {
return false;
}
console.log(withThis);
console.log(andThat);
console.dir(andThose);
console.log(longString, trailing, why, iWish, vizzini, re);
return;
}
// TODO: more examples
If it is working, you have just created your typescript project with a linter. It is a good thing to configure your code editor to perform npm run fix with every save.
Enjoy TypeScript coding.
![]()






