Writing Application-Scale JavaScript:TypeScript

18
Shravan Kumar Kasagoni Senior Development Engineer @ Pramati Technologies Microsoft MVP – ASP/IIS | http://theshravan.net @techieshravan Writing Application-Scale JavaScript

Transcript of Writing Application-Scale JavaScript:TypeScript

Page 1: 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

Page 2: Writing Application-Scale JavaScript:TypeScript

Large scale JavaScript development is hard.

Page 3: Writing Application-Scale JavaScript:TypeScript

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

Page 4: Writing Application-Scale JavaScript:TypeScript

Existing Solutions

Page 5: Writing Application-Scale JavaScript:TypeScript

TypeScript to the Rescue…

Page 6: Writing Application-Scale JavaScript:TypeScript

TypeScript: A language for large scaleJavaScript development.

Page 7: Writing Application-Scale JavaScript:TypeScript

TypeScript: A typed superset of JavaScript that

compiles to plain JavaScript.

Page 8: Writing Application-Scale JavaScript:TypeScript

Any browser. Any host. Any OS.

Page 9: Writing Application-Scale JavaScript:TypeScript

Open Source.

Page 10: Writing Application-Scale JavaScript:TypeScript

+ +

Page 11: Writing Application-Scale JavaScript:TypeScript

+ +

Page 12: Writing Application-Scale JavaScript:TypeScript

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

Page 13: Writing Application-Scale JavaScript:TypeScript

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

Page 14: Writing Application-Scale JavaScript:TypeScript

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

Page 15: Writing Application-Scale JavaScript:TypeScript

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

Page 16: Writing Application-Scale JavaScript:TypeScript
Page 17: Writing Application-Scale JavaScript:TypeScript

http://typescriptlang.org

Page 18: Writing Application-Scale JavaScript:TypeScript

Thank you