This is going to be a quick take on TypeScript.
TypeScript Introduction
- Open source project by Microsoft
- Follows ES6 syntax, even ES7 if possible
- Adds typing to vars (which has its own advantages)
- The compiler for TS is tsc – ts compiler. It is transpiler which Transpiles code into JS.
Environment Setup
Package Installation
sudo apt-get install
npm
sudo apt-get install
nodejs-legacy
sudo npm install -g
typescript
VS Code Installation
Click here to download & install Visual Studio Code
Preparing VS Code for TS
Follow the link to prepare VS Code for TS. This involves -
defining tsconfig.json
creating tasks.json
Note:
If ctrl+shift+B
doesn't invoke the task then check – is tsc working from commandline.
How I did setup?
Created project_dir/src/student.ts with following code.
module main{ class Subject{ name:string; marks:number; constructor(name:string){ this.name=name; } print():string{ return this.name; } } class Student{ name:string; subjects:Array; constructor(name:string){ this.name=name; } print():string{ return this.name } getSubjects():Array { return this.subjects; } addSubject(name:string):void{ this.subjects.push(new Subject(name)); } } let stud1:Student = new Student("John"); console.log(stud1.print()) }
Press Ctrl+Shift+B. This will make a strip appear on top of editor area. Click on Configure Task Runner.
Select TypeScript - tsconfig.json
This will add tasks.json.
Create src/tsconfig.json (I altered it a bit. See github repo)
{ "compilerOptions": { "target": "es5", "module": "commonjs", "sourceMap": true } }
Go to View in menu bar and click on output. Then press ctrl+shift+B. I got following error.
error TS5057: Cannot find a tsconfig.json file at the specified directory: '.'
Go to tasks.json and update the args line to following.
"args": ["-p", "./src"],
Then press ctrl+shift+B. You will find student.js and student.js.map files created
Debugging a TS file
Place a debug point in app.ts file, press F5 and select environment Node.js . This will create launch.json file. Edit the content to make it similar to the following.
{ "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "node", "request": "launch", "program": "${workspaceRoot}/src/app/student.ts", "stopOnEntry": false, "args": [], "cwd": "${workspaceRoot}", "preLaunchTask": null, "runtimeExecutable": null, "runtimeArgs": [ "--nolazy" ], "env": { "NODE_ENV": "development" }, "externalConsole": false, "sourceMaps": true, "outDir": "${workspaceRoot}/src/app" }, { "name": "Attach", "type": "node", "request": "attach", "port": 5858, "address": "localhost", "restart": false, "sourceMaps": false, "outDir": null, "localRoot": "${workspaceRoot}/src/app", "remoteRoot": null } ] }
Configuring local server
To serve AngularJS code, I need *.html files to be served from a local server. Click here to view the reference thread.
$ sudo npm install -g live-server
From VSCode, do a right click on index.html, open in console and execute
$ live-server
Downloading TSD files for Angular
$ typings search --name angular
$ typings install dt~angular --save --global
when I did search for angular, it showed SOURCE=dt, therefore while installing dt~ prepended to angular.
Also install jquery.
$ typings search --name jquery
$ typings install dt~jquery --save --global
This creates index.d.ts file containing reference to all type script definition files. Rename this to tsd.d.ts and its reference in app.ts
/// <reference path="../../typings/tsd.d.ts" />
Add empty file jsonconfig.json at same level as typings.json
Finally I developed first demo app and pushed to github repo.