Writing Application-Scale JavaScript:TypeScript

Post on 10-Aug-2015

41 views 0 download

Tags:

Transcript of Writing Application-Scale JavaScript:TypeScript

Shravan Kumar Kasagoni

Senior Development Engineer @ Pramati Technologies

Microsoft MVP – ASP/IIS | http://theshravan.net

@techieshravan

Writing Application-Scale JavaScript

Large scale JavaScript development is hard.

Organizing a large and growing code base Need to come up with “compensating” patterns for classes and

modules/namespaces

Refactoring JavaScript code is difficult “JavaScript code ‘rots’ over time” “Writing JavaScript code in a large project is like carving code in stone”

Describing APIs Keep the description in synch with the implementation

Concerns with JavaScript

Existing Solutions

TypeScript to the Rescue…

TypeScript: A language for large scaleJavaScript development.

TypeScript: A typed superset of JavaScript that

compiles to plain JavaScript.

Any browser. Any host. Any OS.

Open Source.

+ +

+ +

Structural typing and type inference In practice very few type annotations are necessary

Generics Increases accuracy and expressiveness of type system

Works with existing JavaScript libraries Declaration files can be written and maintained separately

Types enable tooling Provide verification and assistance, but not hard guarantees

Type System

An accurate static representation of JavaScript’s dynamic run-time type system

Scalable application structuring Classes, interfaces, and modules enable clear contracts in

code

Aligned with emerging standards Class and lambda syntax aligns with ECMAScript 6 proposals

Supports popular module systems CommonJS and AMD modules in any ECMAScript 3

environment

Classes, Interfaces, Modules, Generics

An accurate static representation of JavaScript’s dynamic run-time type system

arrows classes enhanced object literals template strings destructuring default + rest + spread let + const iterators + for..of generators unicode modules

module loaders map + set + weakmap +

weakset proxies symbols subclassable built-ins promises math + number + string +

array + object APIs binary and octal literals reflect api tail calls

ECMAScript 6 Features

https://github.com/lukehoban/es6features

Modules Classes Arrow functions Default parameters Destructuring Spread and rest Let and const

for...of Object literal

methods Shorthand properties Computed properties Octal / binary literals Symbols Template strings

Features from the Future, Today

Compiles ECMAScript 6 code to ECMAScript 3 or 5 code using CommonJS or AMD modules

http://typescriptlang.org

Thank you