Table of Contents
- What is TypeScript
- Data Type
- Enum
- Function
- Function Overloading
- Class & Object
- Constructor
- Inheritance
- Access Modifiers
- Static Functions & Properties
- Interface
What is TypeScript?


Create a ts file
- class welcome {
- element: HTMLElement;
- constructor(element: HTMLElement) {
- this.element = element;
- this.element.innerHTML = "Welcome To TypeScript";
- }
- }
- window.onload = () => {
- var elh = document.getElementById('divcontent');
- var _welcomeobj = new welcome(elh);
- };
Create an Index Page
Now, we will create an Index.html page for showing our result on the browser. Given below is the code.
- < !DOCTYPE html >
- <
- html lang = "en" >
- <
- head >
- <
- meta charset = "utf-8" / >
- <
- title > My Fisrt TypeScript 's Application</title> <
- link rel = "stylesheet"
- href = "app.css"
- type = "text/css" / >
- <
- script src = "Welcome.js" > < /script> <
- /head>
- <
- body >
- <
- h1 > My Fisrt TypeScript 's Application</h1> <
- div id = "divcontent" > < /div> <
- /body>
- <
- /html>

Data Types in TypeScript
We know that every programming language has basically two data types - primitive and custom. Here, we know the primitive data types include Boolean, Number, String, Any, Array, Enum.
Syntax

Create a ts file
- class DataType {
- Status: boolean = true;
- Amount: number = 100;
- Price: number = 50.5;
- Subject: string = "TypeScript";
- Value: any = 5;
- constructor() {
- console.log(this.Status);
- console.log(this.Amount);
- console.log(this.Price);
- console.log(this.Subject);
- console.log(this.Value);
- }
- }
- window.onload = () => {
- var val = new DataType();
- }
Boolean
- Status: boolean = true;
String
- Subject: string = "TypeScript";
- Name: string = 'Mamun';
Number
- Decimaldecimal: number = 10;
- Hexadecimalhex: number = 0xf00d;
- Binarybinary: number = 001101;
- Octaloctal: number = 00744;
Enum
- enum SalaryHead {
- Basic = 50, Houserent = 30, Medical = 10, Conveyance = 10
- }
- class SalaryCal {
- Gross: number = 50000;
- BasicSalary: number = (this.Gross * SalaryHead.Basic) / 100;
- Houserent: number = (this.Gross * SalaryHead.Houserent) / 100;
- Medical: number = (this.Gross * SalaryHead.Medical) / 100;
- Conveyance: number = (this.Gross * SalaryHead.Conveyance) / 100;
- constructor() {
- if ((this.BasicSalary + this.Houserent + this.Medical + this.Conveyance) == this.Gross) {
- console.log("Both are equal");
- } else {
- console.log("Both are not equal");
- }
- }
- }
- window.onload = () => {
- var val = new SalaryCal();
- }
Other code
- enum Status {
- IsDelete,
- IsPending,
- IsApprove
- };
Function
- Organization
- Re-usability
- Testing
- Extensibility
- Abstraction
The function can be created in both ways, as a named function, and as an anonymous function, in TypeScript.
Named function without parameters -
- function GetFullName(): string {
- return "Toufique Rahman Tshovon";
- }
- var Name = GetFullName();
- console.log(Name);
Named function with parameters -
- function GetFullName(firstName: string, lastName: string): string {
- return firstName + " " + lastName;
- }
- var Name = GetFullName("Shamim", "Uddin");
- console.log(Name);
Anonymous function without parameter-
- var Name = function(): string {
- return "Toufique Rahman Tshovon";
- }
- console.log(Name());
Anonymous function with parameter -
- var Name = function(firstName: string, lastName: string): string {
- return firstName + " " + lastName;
- }
- console.log(Name("Shamim", "Uddin"));
Default Arguments
- function add(firstnumber: number, secondNumber: number = 10): number {
- return firstnumber + secondNumber;
- }
- console.log(add(10));
We have assigned a default argument in the second number. if do not pass the second number then by default will be assigned 10, but if we pass the second number then the second number will be assigned like,
- function add(firstnumber: number, secondNumber: number = 10): number {
- return firstnumber + secondNumber;
- }
- console.log(add(10, 30));
Function Overloading
Let’s go.
Given below is the code.
- function Add(firstNumber:number,secondNumber:number)
- function Add(firstNumber:number,secondNumber:number,thirdNumber:number)
- function Add(firstNumber:number,secondNumber:number,thirdNumber:number,forthNumber:number);function Add(firstNumber?:number,secondNumber?:number,thirdNumber?:number,forthNumber?:number):number{var result=0;if(firstNumber!=undefined&&secondNumber!=undefined&&thirdNumber!=undefined&&forthNumber!=undefined){result=firstNumber+secondNumber+thirdNumber+forthNumber;}else if(firstNumber!=undefined&&secondNumber!=undefined&&thirdNumber!=undefined){result=firstNumber+secondNumber+thirdNumber;}else if(firstNumber!=undefined&&secondNumber!=undefined){result=firstNumber+secondNumber;}
- return result;}
- console.log(Add(1,2));console.log(Add(1,2,2));console.log(Add(1,2,2,5));
Let’s explain the code,
- function Add(firstNumber: number, secondNumber: number)
Add is a function with two parameters.
- function Add(firstNumber: number, secondNumber: number, thirdNumber: number)
Add is a function with three parameters.
- function Add(firstNumber: number, secondNumber: number, thirdNumber: number, forthNumber: number);
There are three methods with the same name but they have different numbers of parameters.
- function Add(firstNumber ? : number, secondNumber ? : number, thirdNumber ? : number, forthNumber ? : number): number {
- var result = 0;
- if (firstNumber != undefined && secondNumber != undefined && thirdNumber != undefined && forthNumber != undefined) {
- result = firstNumber + secondNumber + thirdNumber + forthNumber;
- } else if (firstNumber != undefined && secondNumber != undefined && thirdNumber != undefined) {
- result = firstNumber + secondNumber + thirdNumber;
- } else if (firstNumber != undefined && secondNumber != undefined) {
- result = firstNumber + secondNumber;
- }
- return result;
- }
Above, we have implemented our method. The result is a variable that is assigned the value 0 by default.
Class & Object


Let’s go to the code.
- class Employee {
- public FirstName: string;
- public LastName: string;
- public GetFullName(): string {
- return this.FirstName + " " + this.LastName;
- }
- public GetReverseName(): string {
- var fullName = this.GetFullName();
- var reverse = '';
- for (var i = fullName.length - 1; i >= 0; i--) reverse += fullName[i];
- return reverse;
- }
- }
- window.onload = () => {
- var aemployee = new Employee();
- aemployee.FirstName = "Toufique";
- aemployee.LastName = "Rahman";
- var fullName = aemployee.GetFullName();
- var reverseName = aemployee.GetReverseName();
- document.getElementById('fulName').innerHTML = fullName;
- document.getElementById('reverseName').innerHTML = reverseName;
- };
Let’s explain the code.
- class Employee
- Class Name Employee
- public FirstName: string;
- public LastName: string;
- Both lines are class attributes.public GetFullName(): string {
- return this.FirstName + " " + this.LastName;
- }
- public GetReverseName(): string {
- var fullName = this.GetFullName();
- var reverse = '';
- for (var i = fullName.length - 1; i >= 0; i--) reverse += fullName[i];
- return reverse;
- }
There are two methods in the above code - GetFullName() and Ger ReverseName().
- var aemployee = new Employee();
- Object has created which name is aemployee.aemployee.FirstName = "Toufique";
- aemployee.LastName = "Rahman";
Class’s attributes have been assigned as FirstName and LastName.
- var fullName = aemployee.GetFullName();
- var reverseName = aemployee.GetReverseName();
Two methods have been called and kept invariable.
- document.getElementById('fulName').innerHTML = fullName;
- document.getElementById('reverseName').innerHTML = reverseName;
Constructor
Below is the code of Employee class.
- class Employee {
- public FirstName: string;
- public LastName: string;
- constructor(firstName: string, lastName: string) {
- this.FirstName = firstNmae;
- this.LastName = lastName;
- }
- public GetFullName(): string {
- return this.FirstName + "" + this.LastName;
- }
- }

Created object of Employee class.
- var aemployee = new Employee("Toufique", "Rahman");
- Multiple constructor implementations are not allowed.
- If the constructor is in class with the parameter, then without passing an argument, Object creation is impossible.
Inheritance

- class PermanentEmployee {
- public FirstName: string;
- public LastName: string;
- constructor(firstName: string, lastName: string) {
- this.FirstName = firstName;
- this.LastName = lastName;
- }
- public GetFullName(): string {
- return this.FirstName + " " + this.LastName;
- }
- public GetReverseName(): string {
- var fullName = this.GetFullName();
- var reverse = '';
- for (var i = fullName.length - 1; i >= 0; i--) reverse += fullName[i];
- return reverse;
- }
- }
Sub Class
- class TemporaryEmployee extends PermanentEmployee {
- public JobDuration: string;
- constructor(firstName: string, lastName: string) {
- super(firstName, lastName);
- }
- }
- var employeeObj = new TemporaryEmployee("Toufique", "Rahman");
- var fullName = employeeObj.GetFullName();
- var reverseName = employeeObj.GetReverseName();
- class PermanentEmployee {
- public FirstName: string;
- public LastName: string;
Constructor has two parameters, firstName, and lastName. Both are assigned to attributes.
- constructor(firstName: string, lastName: string) {
- this.FirstName = firstName;
- this.LastName = lastName;
- }
Two methods- GetFullName,
- public GetFullName(): string {
- return this.FirstName + " " + this.LastName;
- }
and GetReverseName,
- public GetReverseName(): string {
- var fullName = this.GetFullName();
- var reverse = '';
- for (var i = fullName.length - 1; i >= 0; i--) reverse += fullName[i];
- return reverse;
- }
Constructor
- constructor(firstName: string, lastName: string) {
- super(firstName, lastName);
- }
TemporaryEmployee class’s object is created here.
- var employeeObj = new TemporaryEmployee("Toufique", "Rahman");
- var fullName = employeeObj.GetFullName();
- var reverseName = employeeObj.GetReverseName();
Access Modifiers
- TypeScript has three types of access modifiers- public, private, and protected.
- Access modifiers prevent the misuse of class members (functions and properties).
- If we do not use any access modifier, TypeScript sets a "public access modifier" to all the class members (functions or properties), by default.
Public Access
If using a public access modifier, the members (functions or properties) can be accessed anywhere in the code freely. Like, Base class or Sub Class.
Example
Let's get the code explanation.
- class SavingAccount {
- public AccountNo: string;
- private Amount: number;
- constructor(accountNo: string) {
- this.AccountNo = accountNo;
- }
- public Deposit(amount: number): string {
- this.Amount = amount;
- return "Deposit Successfully.";
- }
- public withdraw(amount: number): string {
- this.Amount = amount;
- return "withdraw Successfully.";
- }
- public TotalAmount(): number {
- return this.Amount;
- }
- }
- var _savingAccount = new SavingAccount("sav0234232");
- _savingAccount.Deposit(1000);
- _savingAccount.withdraw(500);
- _savingAccount.TotalAmount();
Let's get it in code.
- class SavingAccount {
- public AccountNo: string;
- private Amount: number;
- constructor(accountNo: string) {
- this.AccountNo = accountNo;
- }
- public Deposit(amount: number): string {
- this.Amount = amount;
- return "Deposit Successfully.";
- }
- public withdraw(amount: number): string {
- this.Amount = amount;
- return "withdraw Successfully.";
- }
- public TotalAmount(): number {
- return this.Amount;
- }
- }
- var _savingAccount = new SavingAccount("sav0234232");

Example
- class Account {
- public AccountNo: string;
- protected Amount: number;
- constructor(accountNo: string) {
- this.AccountNo = accountNo;
- }
- public Deposit(amount: number): string {
- this.Amount = amount;
- return "Deposit Successfully.";
- }
- public withdraw(amount: number): string {
- this.Amount = amount;
- return "withdraw Successfully.";
- }
- protected TotalAmount(): number {
- return this.Amount;
- }
- }

Sub Class
- class SavingAccount extends Account {
- constructor(accountNo: string) {
- super(accountNo);
- }
- public TotalAmount(): number {
- return this.Amount;
- }
- }
- var _savingAccount = new SavingAccount("Sav-43434");
- _savingAccount.Deposit(1000);
- _savingAccount.withdraw(500);
Static Function & Properties
Example
- class Calculator {
- public static FirstNumber: number;
- public static SecondNumber: number;
- public static addTowNumber(): number {
- return this.FirstNumber + this.SecondNumber;
- }
- }
- Calculator.FirstNumber = 10;
- Calculator.SecondNumber = 30;
- Calculator.addTowNumber()
Like,
- Calculator.FirstNumber = 10;
- Calculator.SecondNumber = 30;
- Calculator.addTowNumber()
Interface class
- interface iGenericFactory {
- Save(): void;
- Update(): void;
- delete(): void
- }
Interface Implemented
- class Employee implements iGenericFactory {
- public Save(): void {}
- public Update(): void {}
- public delete(): void {}
- }
- When we implement the interface, then we must use the implementation keyword.
- All Methods will be implemented.
Happy Coding.

Guest UserPosted Oct 12, 2016, 7:29 AM
How does .ts file gets compiled in JS.... ?
Prasanna MuraliPosted Oct 10, 2016, 8:23 AM
Nice Post Shamim Uddin
Golam KibriaPosted Sep 7, 2016, 5:08 AM
Nice Article :)
Mahfuz BappyPosted Sep 7, 2016, 4:23 AM
Nice one and it help me to learn
Shashangka ShekharPosted Sep 7, 2016, 4:17 AM
Nice Share.....:)
Tarun DPosted Sep 7, 2016, 12:19 AM
Nice article.. Very helpful for beginners