SlideShare a Scribd company logo
All You Need to Know About Type Script
All You Need to Know About Type Script
All You Need to Know About Type Script
All You Need to Know About Type Script
All You Need to Know About Type Script
All You Need to Know About Type Script
All You Need to Know About Type Script
All You Need to Know About Type Script
TypeScript
TypeScript Demo
• Basic Types
• Any Type
• Interfaces
• Classes
• Modules
• Generics
• Mixins
var n: number;
var a; // no type -> Any
var s = "Max"; // Contextual typing -> string
n = 5; // valid because 5 is a number
a = 5; // valid because a is of type Any
a = "Hello"; // valid because a is of type Any
n = "Hello"; // compile time error because
// "Hello" is not a number
Type Basics
Any
Primitive Types
Number
Boolean
String
Contextual typing
Determine result type
from expressions
automatically
var person = function (age: number) {
this.age = age;
this.growOld = function () {
this.age++;
alert(this.age);
}
this.growOldL = () => {
this.age++;
alert(this.age);
}
}
var p = new person(1);
setTimeout(p.growOldL, 100);
setTimeout(alert(p.age), 100);
Type Basics
Lambda Function
aka. Arrow function
• Eliminates the needs
for typing function
over and over again.
• Lexically captures
the meaning of this
function getAverage(a: number, b: number, c?: number) {
var total = a + b;
if (c)
total = total + c;
return total;
}
function getAverages(...a: number[]):number {
var total = 0;
for (var i = 0; i < a.length; i++) {
total += a[i];
}
return total;
}
Type Basics
Functions
Optional Parameters
Default Parameters
Rest Parameters
Rest parameters allow
caller to specify zero or
more arguments of the
specified type.
function getTotal(a: string, b: string, c: string): number;
function getTotal(a: number, b: number, c: number): number;
function getTotal(a: number, b: string, c: number): number;
// implementation signature
function getTotal(a: any, b: any, c?: any): number {
var total = parseInt(a, 10) + parseInt(b, 10) + parseInt(c,
10);
return total;
}
var result = getTotal(2, 2, 2);
alert(result);
Type Basics
Functions
• Overloading
interface IStudent {
id: number;
name: string;
onLeave?: boolean;
}
function printStudent(s: IStudent) {
}
// Describing function types
interface searchFunction {
(source: string, subString: string):boolean
}
var searchFunctionImpl: searchFunction = function (s, ss)
{
return true;
}
Type Basics
Interfaces
Interface can be used as
an abstract
type that can be
implemented by
concrete classes, but
they can also be used to
define any structure in
your TypeScript
program.
Interfaces are also
capable of describing
function types.
abstract class A {
foo(): number { return this.bar(); }
abstract bar(): number;
}
// error, Cannot create an instance of the abstract class 'A'
var a = new A();
class B extends A {
bar() { return 1; }
}
var b = new b(); // success, all abstracts are defined
Type Basics
Abstract Classes (v 1.6,
Sept 16th)
Similar in some ways to
interfaces, abstract
classes give you a way
of creating a base class,
complete with default
implementations
class Student {
private name: string;
constructor(name: string, age: number) {
this.name = name;
}
print() {
alert(this.name);
}
}
TODO: Static Types
Type Basics
Classes
TypeScript classes
become JavaScript
pseudo-classes
http://javascript.info/tutorial/pseudo-classical-pattern
Enforcement of private
variables is at runtime
only.
class Animal {
Name: string;
constructor(name: string) {
this.Name = name;
}
move(meters = 0) {
alert(this.Name + " moved " + meters);
}
}
class Snake extends Animal {
}
class MyStudent implements IStudent {
id: number;
name: string;
onLeave: boolean;
}
Type Basics
Types of Class
Heritage
Implements & Extends
There are two types of
class heritage in
TypeScript. A class can
implement an interface
using the implements
keyword
and a class can inherit
from another class using
the extends keyword.
// Internal Modules.
module Shipping {
export interface Ship {
name: string;
tons: number;
}
export class NewShip implements Ship {
name = "New Ship";
tons = 500;
}
}
// Splitting into multiple files.
/// <reference path=“Shipping.ts" />
tsc --out all.js app1.ts
Type Basics
Modules
Gives you various ways
to organize your code in
TypeScript.
1. Internal Modules
2. External Modules
// External Modules.
export class Ship {
name = "New Ship";
tons = 500;
}
// ---------------------------------
import Shipping = require('Ship')
var s = new Shipping.Ship();
// ---------------------------------
tsc --module commonjs app1.ts
tsc --module amd app1.ts
Type Basics
Modules
External Modules
• AMD using RequireJs
• CommonJs
class MyContainer<T> {
private array: T[];
constructor(array: T[]) {
this.array = array;
}
add(item: T) {
this.array.push(item);
}
}
var strContainer = new MyContainer<number>([1]);
strContainer.add(2);
Type Basics
Generics
Gives you the ablility to
create a component that
can work over a variety
of types rather than a
single one.
Generic Constraints
$('#id').html('TypeScript complains that $ is undefined');
Type Basics
Ambient Declarations
Ambient declarations
can be used to add type
information to existing
JavaScript. Commonly,
this would mean
adding type information
for your own existing
code, or for a third-
party library that you
want to consume in
your TypeScript
program.
http://definitelytyped.org/
• http://definitelytyped.org/tsd/
Other Stuff
• Mixins
• Iterators
• Decorators
• Union Types, Type Guards
• Intersection types
• Local type declarations
• ES6 generators
• Asyn/await
All You Need to Know About Type Script
All You Need to Know About Type Script
AngularJS 1.x + TypeScript
Aurangzaib Siddiqui
End of Part 1

More Related Content

What's hot (20)

PDF
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
PPTX
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
 
PPTX
Typescript
Nikhil Thomas
 
PDF
TypeScript 2 in action
Alexander Rusakov
 
PPT
A Deeper look into Javascript Basics
Mindfire Solutions
 
PPT
JavaScript Basics
Mats Bryntse
 
PPTX
Typescript 101 introduction
Bob German
 
ODP
Getting started with typescript and angular 2
Knoldus Inc.
 
PPT
Introduction to Javascript
Amit Tyagi
 
PDF
Basics of JavaScript
Bala Narayanan
 
PDF
TypeScript for Java Developers
Yakov Fain
 
PDF
JavaScript Programming
Sehwan Noh
 
PPT
Javascript
guest03a6e6
 
PDF
Google Dart
Eberhard Wolff
 
PPTX
TypeScript Modules
Noam Kfir
 
PPTX
Javascript basics for automation testing
Vikas Thange
 
PPT
JavaScript - An Introduction
Manvendra Singh
 
PPTX
Introduction to JavaScript Basics.
Hassan Ahmed Baig - Web Developer
 
PPTX
Introduction about type script
Binh Quan Duc
 
PPTX
Type script, for dummies
santiagoaguiar
 
TypeScript: coding JavaScript without the pain
Sander Mak (@Sander_Mak)
 
Getting started with typescript
C...L, NESPRESSO, WAFAASSURANCE, SOFRECOM ORANGE
 
Typescript
Nikhil Thomas
 
TypeScript 2 in action
Alexander Rusakov
 
A Deeper look into Javascript Basics
Mindfire Solutions
 
JavaScript Basics
Mats Bryntse
 
Typescript 101 introduction
Bob German
 
Getting started with typescript and angular 2
Knoldus Inc.
 
Introduction to Javascript
Amit Tyagi
 
Basics of JavaScript
Bala Narayanan
 
TypeScript for Java Developers
Yakov Fain
 
JavaScript Programming
Sehwan Noh
 
Javascript
guest03a6e6
 
Google Dart
Eberhard Wolff
 
TypeScript Modules
Noam Kfir
 
Javascript basics for automation testing
Vikas Thange
 
JavaScript - An Introduction
Manvendra Singh
 
Introduction to JavaScript Basics.
Hassan Ahmed Baig - Web Developer
 
Introduction about type script
Binh Quan Duc
 
Type script, for dummies
santiagoaguiar
 

Viewers also liked (7)

PDF
The Hitchhiker’s Guide to StackOverflow
SafeDK
 
DOC
Oose kk
Ayeena Malik
 
PDF
Unirac PV Racking Basics
Fadi Maalouf, PMP
 
PPTX
Building RESTful APIs w/ Grape
Daniel Doubrovkine
 
PPT
StackOverflow Architectural Overview
Folio3 Software
 
PPT
Best Practices in SIS Documentation
Emerson Exchange
 
PPT
Cat SIS Fall 2011
Bates Technical College Library
 
The Hitchhiker’s Guide to StackOverflow
SafeDK
 
Oose kk
Ayeena Malik
 
Unirac PV Racking Basics
Fadi Maalouf, PMP
 
Building RESTful APIs w/ Grape
Daniel Doubrovkine
 
StackOverflow Architectural Overview
Folio3 Software
 
Best Practices in SIS Documentation
Emerson Exchange
 
Ad

Similar to All You Need to Know About Type Script (20)

PPTX
Type script
Zunair Shoes
 
PPTX
Complete Notes on Angular 2 and TypeScript
EPAM Systems
 
PDF
TypeScript Interview Questions PDF By ScholarHat
Scholarhat
 
PPTX
Typescript ppt
akhilsreyas
 
PPT
TypeScript.ppt LPU Notes Lecture PPT for 2024
manveersingh2k05
 
PPTX
TypeScript
Udaiappa Ramachandran
 
PDF
Back to the Future with TypeScript
Aleš Najmann
 
PPTX
Typescript language extension of java script
michaelaaron25322
 
PPTX
Introduction to TypeScript
Tomas Corral Casas
 
PPTX
typescript.pptx
ZeynepOtu
 
PPTX
TypeScript 101
rachelterman
 
PPTX
Introduction to TypeScript
KeithMurgic
 
PDF
TYPESCRIPT.pdfgshshhsjajajsjsjjsjajajjajjj
sonidsxyz02
 
PPTX
TypeScript Presentation - Jason Haffey
Ralph Johnson
 
PPT
Learning typescript
Alexandre Marreiros
 
PPTX
The advantage of developing with TypeScript
Corley S.r.l.
 
PPTX
AngularConf2015
Alessandro Giorgetti
 
PPTX
TypeScript Overview
Aniruddha Chakrabarti
 
PPTX
Type script is awesome
KeithMurgic
 
PDF
Introduction to TypeScript
NexThoughts Technologies
 
Type script
Zunair Shoes
 
Complete Notes on Angular 2 and TypeScript
EPAM Systems
 
TypeScript Interview Questions PDF By ScholarHat
Scholarhat
 
Typescript ppt
akhilsreyas
 
TypeScript.ppt LPU Notes Lecture PPT for 2024
manveersingh2k05
 
Back to the Future with TypeScript
Aleš Najmann
 
Typescript language extension of java script
michaelaaron25322
 
Introduction to TypeScript
Tomas Corral Casas
 
typescript.pptx
ZeynepOtu
 
TypeScript 101
rachelterman
 
Introduction to TypeScript
KeithMurgic
 
TYPESCRIPT.pdfgshshhsjajajsjsjjsjajajjajjj
sonidsxyz02
 
TypeScript Presentation - Jason Haffey
Ralph Johnson
 
Learning typescript
Alexandre Marreiros
 
The advantage of developing with TypeScript
Corley S.r.l.
 
AngularConf2015
Alessandro Giorgetti
 
TypeScript Overview
Aniruddha Chakrabarti
 
Type script is awesome
KeithMurgic
 
Introduction to TypeScript
NexThoughts Technologies
 
Ad

More from Folio3 Software (20)

PPT
Shopify & Shopify Plus Ecommerce Development Experts
Folio3 Software
 
PPT
Magento and Magento 2 Ecommerce Development
Folio3 Software
 
PPT
Enter the Big Picture
Folio3 Software
 
PPT
A Guideline to Test Your Own Code - Developer Testing
Folio3 Software
 
PPT
OWIN (Open Web Interface for .NET)
Folio3 Software
 
PPT
Introduction to Go-Lang
Folio3 Software
 
PPT
An Introduction to CSS Preprocessors (SASS & LESS)
Folio3 Software
 
PPT
Introduction to SharePoint 2013
Folio3 Software
 
PPT
An Overview of Blackberry 10
Folio3 Software
 
PPT
Enterprise Mobility - An Introduction
Folio3 Software
 
PPT
Distributed and Fault Tolerant Realtime Computation with Apache Storm, Apache...
Folio3 Software
 
PPT
Introduction to Docker
Folio3 Software
 
PPT
Introduction to Enterprise Service Bus
Folio3 Software
 
PPT
NOSQL Database: Apache Cassandra
Folio3 Software
 
PPT
Regular Expression in Action
Folio3 Software
 
PPT
HTTP Server Push Techniques
Folio3 Software
 
PPT
Best Practices of Software Development
Folio3 Software
 
PPT
Offline Data Access in Enterprise Mobility
Folio3 Software
 
PPT
Realtime and Synchronous Applications
Folio3 Software
 
PPT
Web Performance & Scalability Tools
Folio3 Software
 
Shopify & Shopify Plus Ecommerce Development Experts
Folio3 Software
 
Magento and Magento 2 Ecommerce Development
Folio3 Software
 
Enter the Big Picture
Folio3 Software
 
A Guideline to Test Your Own Code - Developer Testing
Folio3 Software
 
OWIN (Open Web Interface for .NET)
Folio3 Software
 
Introduction to Go-Lang
Folio3 Software
 
An Introduction to CSS Preprocessors (SASS & LESS)
Folio3 Software
 
Introduction to SharePoint 2013
Folio3 Software
 
An Overview of Blackberry 10
Folio3 Software
 
Enterprise Mobility - An Introduction
Folio3 Software
 
Distributed and Fault Tolerant Realtime Computation with Apache Storm, Apache...
Folio3 Software
 
Introduction to Docker
Folio3 Software
 
Introduction to Enterprise Service Bus
Folio3 Software
 
NOSQL Database: Apache Cassandra
Folio3 Software
 
Regular Expression in Action
Folio3 Software
 
HTTP Server Push Techniques
Folio3 Software
 
Best Practices of Software Development
Folio3 Software
 
Offline Data Access in Enterprise Mobility
Folio3 Software
 
Realtime and Synchronous Applications
Folio3 Software
 
Web Performance & Scalability Tools
Folio3 Software
 

Recently uploaded (20)

PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PDF
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
PDF
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PPTX
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
PDF
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
PDF
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
PDF
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PDF
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
PDF
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PDF
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
PDF
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
"Beyond English: Navigating the Challenges of Building a Ukrainian-language R...
Fwdays
 
How Startups Are Growing Faster with App Developers in Australia.pdf
India App Developer
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Presentation - Vibe Coding The Future of Tech
yanuarsinggih1
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
AUTOMATION AND ROBOTICS IN PHARMA INDUSTRY.pptx
sameeraaabegumm
 
Building Real-Time Digital Twins with IBM Maximo & ArcGIS Indoors
Safe Software
 
Using FME to Develop Self-Service CAD Applications for a Major UK Police Force
Safe Software
 
"AI Transformation: Directions and Challenges", Pavlo Shaternik
Fwdays
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
HubSpot Main Hub: A Unified Growth Platform
Jaswinder Singh
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
Chris Elwell Woburn, MA - Passionate About IT Innovation
Chris Elwell Woburn, MA
 
NewMind AI - Journal 100 Insights After The 100th Issue
NewMind AI
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
CIFDAQ Token Spotlight for 9th July 2025
CIFDAQ
 
Jak MŚP w Europie Środkowo-Wschodniej odnajdują się w świecie AI
dominikamizerska1
 

All You Need to Know About Type Script

  • 10. TypeScript Demo • Basic Types • Any Type • Interfaces • Classes • Modules • Generics • Mixins
  • 11. var n: number; var a; // no type -> Any var s = "Max"; // Contextual typing -> string n = 5; // valid because 5 is a number a = 5; // valid because a is of type Any a = "Hello"; // valid because a is of type Any n = "Hello"; // compile time error because // "Hello" is not a number Type Basics Any Primitive Types Number Boolean String Contextual typing Determine result type from expressions automatically
  • 12. var person = function (age: number) { this.age = age; this.growOld = function () { this.age++; alert(this.age); } this.growOldL = () => { this.age++; alert(this.age); } } var p = new person(1); setTimeout(p.growOldL, 100); setTimeout(alert(p.age), 100); Type Basics Lambda Function aka. Arrow function • Eliminates the needs for typing function over and over again. • Lexically captures the meaning of this
  • 13. function getAverage(a: number, b: number, c?: number) { var total = a + b; if (c) total = total + c; return total; } function getAverages(...a: number[]):number { var total = 0; for (var i = 0; i < a.length; i++) { total += a[i]; } return total; } Type Basics Functions Optional Parameters Default Parameters Rest Parameters Rest parameters allow caller to specify zero or more arguments of the specified type.
  • 14. function getTotal(a: string, b: string, c: string): number; function getTotal(a: number, b: number, c: number): number; function getTotal(a: number, b: string, c: number): number; // implementation signature function getTotal(a: any, b: any, c?: any): number { var total = parseInt(a, 10) + parseInt(b, 10) + parseInt(c, 10); return total; } var result = getTotal(2, 2, 2); alert(result); Type Basics Functions • Overloading
  • 15. interface IStudent { id: number; name: string; onLeave?: boolean; } function printStudent(s: IStudent) { } // Describing function types interface searchFunction { (source: string, subString: string):boolean } var searchFunctionImpl: searchFunction = function (s, ss) { return true; } Type Basics Interfaces Interface can be used as an abstract type that can be implemented by concrete classes, but they can also be used to define any structure in your TypeScript program. Interfaces are also capable of describing function types.
  • 16. abstract class A { foo(): number { return this.bar(); } abstract bar(): number; } // error, Cannot create an instance of the abstract class 'A' var a = new A(); class B extends A { bar() { return 1; } } var b = new b(); // success, all abstracts are defined Type Basics Abstract Classes (v 1.6, Sept 16th) Similar in some ways to interfaces, abstract classes give you a way of creating a base class, complete with default implementations
  • 17. class Student { private name: string; constructor(name: string, age: number) { this.name = name; } print() { alert(this.name); } } TODO: Static Types Type Basics Classes TypeScript classes become JavaScript pseudo-classes http://javascript.info/tutorial/pseudo-classical-pattern Enforcement of private variables is at runtime only.
  • 18. class Animal { Name: string; constructor(name: string) { this.Name = name; } move(meters = 0) { alert(this.Name + " moved " + meters); } } class Snake extends Animal { } class MyStudent implements IStudent { id: number; name: string; onLeave: boolean; } Type Basics Types of Class Heritage Implements & Extends There are two types of class heritage in TypeScript. A class can implement an interface using the implements keyword and a class can inherit from another class using the extends keyword.
  • 19. // Internal Modules. module Shipping { export interface Ship { name: string; tons: number; } export class NewShip implements Ship { name = "New Ship"; tons = 500; } } // Splitting into multiple files. /// <reference path=“Shipping.ts" /> tsc --out all.js app1.ts Type Basics Modules Gives you various ways to organize your code in TypeScript. 1. Internal Modules 2. External Modules
  • 20. // External Modules. export class Ship { name = "New Ship"; tons = 500; } // --------------------------------- import Shipping = require('Ship') var s = new Shipping.Ship(); // --------------------------------- tsc --module commonjs app1.ts tsc --module amd app1.ts Type Basics Modules External Modules • AMD using RequireJs • CommonJs
  • 21. class MyContainer<T> { private array: T[]; constructor(array: T[]) { this.array = array; } add(item: T) { this.array.push(item); } } var strContainer = new MyContainer<number>([1]); strContainer.add(2); Type Basics Generics Gives you the ablility to create a component that can work over a variety of types rather than a single one. Generic Constraints
  • 22. $('#id').html('TypeScript complains that $ is undefined'); Type Basics Ambient Declarations Ambient declarations can be used to add type information to existing JavaScript. Commonly, this would mean adding type information for your own existing code, or for a third- party library that you want to consume in your TypeScript program.
  • 24. Other Stuff • Mixins • Iterators • Decorators • Union Types, Type Guards • Intersection types • Local type declarations • ES6 generators • Asyn/await
  • 27. AngularJS 1.x + TypeScript Aurangzaib Siddiqui End of Part 1

Editor's Notes

  • #8: Typescript is not a new language. It is at the core JS. It is JS with type annotations, decorators and generic etc. What it adds is type and powered by that is tooling. Tooling that is not possible with dynamic language like JavaScript. So when you compile it all goes away and what you get is simple javascript.
  • #12: ‘Contextual typing‘ is a form of type inference.
  • #13: ‘Contextual typing‘ is a form of type inference.
  • #14: ‘Contextual typing‘ is a form of type inference.
  • #15: In many languages, each overload has its own implementation but in TypeScript the overloads all decorate a single implementation
  • #16: ‘Contextual typing‘ is a form of type inference.
  • #17: ‘Contextual typing‘ is a form of type inference.
  • #18: ‘Contextual typing‘ is a form of type inference.
  • #19: ‘Contextual typing‘ is a form of type inference.
  • #22: interface Lengthwise { length: number; } function <T extends Lengthwise>(arg: T): T { console.log(arg.length); }
  • #23: All ambient declarations begin with the declare keyword. This tells the compiler that the following code block contains only type information and no implementation. Blocks of code created using the declare keyword will be erased during compilation and result in no JavaScript output. declare class jQuery { html(html: string): void; } declare function $(query: string): jQuery; /// <reference path="typings/jquery/jquery.d.ts" />
  • #25: https://github.com/ziaukhan/learn-typescript/blob/master/step16_union_types/app.ts http://blogs.msdn.com/b/typescript/archive/2014/11/18/what-s-new-in-the-typescript-type-system.aspx
  • #26: AtScript