TypeScript Access Modifiers

Access modifier pada class di TypeScript digunakan untuk mengatur level akses atau visibilitas properti atau method dalam class. Access modifier dapat ditempatkan sebelum properti atau method dalam class dan terdapat tiga jenis access modifier yaitu:

Public (default)

Properti atau method dapat diakses dari dalam class, subclass, dan instance objek.

class Animal {
    name:string;
    foot:number;

    constructor(name: string,foot:number){
        this.name = name;
        this.foot = foot;
    }

    printAnimal(){
        console.log(`Animal name ${this.name} number of animal legs ${this.foot}`)
    }
}

Private

Properti atau method hanya dapat diakses dari dalam class, tidak dapat diakses dari subclass atau instance objek.

class Car{
    private color:string;
    private type:string;

    constructor(color: string,type: string){
        this.color =color;
        this.type = type;
    }

    getColor():string{
        return this.color;
    }

    getType():string{
        return this.type;
    }

}

let bus = new Car("Red","Bus")
console.log(`Color ${bus.getColor()} and Type ${bus.getType()}`)

Protected

Properti atau method dapat diakses dari dalam class dan subclass, tetapi tidak dapat diakses dari instance objek.

class Person {
    protected firstName: string
    protected lastName: string
    private age :number;

    constructor(firstName: string, lastName: string,age :number) {
        this.firstName = firstName;
        this.lastName = lastName;
        this.age = age;
    }

    getPerson(): string {
        return `${this.firstName} ${this.lastName} ${this.age}`;
    }

}


let person1 = new Person("Jhon","Due",30);

console.log(`Perosn is ${person1.getPerson()}`);

Readonly

TypeScript menyediakan methode atau keyword readonly dimana ini bisa digunakan untuk membuat suatu properti/class menjadi immutable (tidak bisa diubah) atau dibuat instance pada class, untuk membuat properti/class menjadi immutable kita bisa mengunakan keyword readonly seperti contoh berikut :

class Person {
    readonly birthDate: Date;

    constructor(birthDate: Date) {
        this.birthDate = birthDate;
    }
}

Source code tutorial Typescript tersedia di github typescript-days

hyvercode

TypeScript Class

Basic Class

TypeScript sama seperti ECMA Script 6 (ES6), support object-oriented programing (OOP). Class sendiri adalah sebuah blueprint atau rancangan untuk membuat objek dengan properti dan metode tertentu. Class dapat digunakan untuk membuat objek dengan karakteristik dan perilaku yang serupa.

Dalam class, kita dapat menentukan properti atau variabel yang dimiliki oleh objek dan metode atau fungsi yang dapat dijalankan pada objek. Class juga dapat memiliki constructor, yang digunakan untuk menginisialisasi properti ketika sebuah objek dibuat.

Berikut contoh sederhana class di TypeScript:

// Sample class Animal
class Animal {
    name:string;
    foot:number;

    constructor(name: string,foot:number){
        this.name = name;
        this.foot = foot;
    }

    printAnimal(){
        console.log(`Animal name ${this.name} number of animal legs ${this.foot}`)
    }
}

let tiger = new Animal("Tiger",4);

tiger.printAnimal();


let chicken = new Animal("Chicken",2);

chicken.printAnimal();
$ ts-node Animal.ts
Animal name Tiger number of animal legs 4
Animal name Chicken number of animal legs 2

Pada contoh diatas kita membuat sebuah class dengan nama class Animal dimana classs yang memiliki properti nama dan kaki selain itu class Animal juga memiliki function/methode printAnimal(), dimana function ini akan digunakan untuk mecetak nama dan jumlah kaki dari animal. Classs Animal ini adalah Blueprint dimana dengan class ini kemudian kita membuat object Tiger. Object tiger di buat instance dari class Animal dimana ketika kita membuat object tiger kita mengirim paramater ke contructor Animal yaiu name = “Tiger” dan foot = 4, selain tiger kita juga membuat object Chicken dengan nama=”Chicken” dan foot=2. Jadi dengan satu class Animal kita bisa membuat beberapa object lainnya dengan paramater yang berbeda.

Contructors

Contructor adalah sebuah method khusus yang dieksekusi ketika sebuah instance objek dibuat dari class. Constructor digunakan untuk menginisialisasi nilai properti dalam objek yang dibuat. Dalam sebuah class, constructor dapat dideklarasikan dengan menggunakan keyword “constructor”

Contoh pengunaan Contructor di TypeScript :

class Animal {
    name:string;
    foot:number;

    constructor(name: string,foot:number){
        this.name = name;
        this.foot = foot;
    }

    printAnimal(){
        console.log(`Animal name ${this.name} number of animal legs ${this.foot}`)
    }
}

Atau kita bisa juga membuat contructor lebih sederhana seperti berikut :

class Animal {
    constructor(public name: string,public foot:number){
        this.name = name;
        this.foot = foot;
    }

    printAnimal(){
        console.log(`Animal name ${this.name} number of animal legs ${this.foot}`)
    }
}

Source code tutorial Typescript tersedia di github typescript-days

hyvercode

TypeScript Functions

Function adalah sebuah block code dalam bahasa programan yang bisa di baca , di rubah dan digunakan berulang kali. Contoh sederhana penulisan function pada bahsa pemograman TypeScript :

//Example Function

function print(){
    console.log('Hello World');
}

//Call function
print();

Function Types

Seperti halnya Javascript pada TypeScript memiliki beberapa tipe function diantaranya :

Function Void

Function dengan tipe void yaitu jenis function yang tidak memiliki nilai kembalian seperti berikut :

function print():void{
    console.log('Hello World');
}

//Call function
print();

Function Return /Non Void

Function tipe ini adalah tipe function yang memiliki nilai kembalian baik type data primitive atau object seperti berikut :

function calculateNumber():number{
    return 10 +10;
}

console.log(`10 + 10 = ${calculateNumber()}`)

Function Parameter

Function tipe ini adalah tipe function yang memiliki nilai parameter, Kita bisa membuat parameter baik dengan tipe data primitive maupun object, berikut contoh :

//Type return
function sumNumber(a:number, b:number):number{
    return a+b;
}

console.log(`A + B = ${sumNumber(10,30)}`)


function message(message:string):string{
    return message;
}

console.log(message('Learning function in TypeScript'))

Function Optional Parameter

Sama halnya dengan tipe parameter ,tipe ini juga bisa menerima parameter baik berupa tipe data primitive maupun object akan tetapi kita bisa membuat parameter bersifat optional yaitu dimana jika kita memiliki 2 parameter atau lebih namun ada parameter yang bersipat optional maka ketika function itu kita panggil, function tersebut dapat dijalankan dan compailer tidak akan melepar kesalahan. Contoh Function dengan Optional parameter :

//Optional param
function messageOptionalParam(message:string,age?:number):any{
    return `Your message is ${message} and my age is ${age}`
}

console.log(messageOptionalParam("Learning TypeScript"))

Disini kita mebuat fucntion dengan 2 parameter akan tetapi hanya satu parameter yang kita masukan.

Function Default Parameter

Hampir sama dengan Function Optional Parameter, akan tetapi pada tipe Function Default Parameter, kita bisa memberikan nilai default pada parameter sehingga ketika parameter tersebut tidak menerima operan, maka dia akan mengunakan nilai default yang telah kita definisikan sebelumnya, Contoh seperti berikut :

function messageDefaultParam(message:string,age:number=20):any{
    return `Your message is ${message} and my age is ${age}`
}

console.log(messageDefaultParam("Learning TypeScript"))

Function Argument Paramater

Function ini bisa menerima paramater dengan jumlah nol atau lebih paramater. Paramater argument berupa tipe data Array[] dan hanya memiliki satu argument. Contoh seperti berikut :

//Function args

function printFruits(...fruits: string[]){
    fruits.forEach(fruit => {
        console.log(`Fruit ${fruit}`)
    });
};

console.log(printFruits('Apple','Banana','Mango','Orange'))

Function Overloading

Function Overloading adalah tipe function dimana pada TypeScript kita diperbolehkan membuat function dengan nama yang sama akan tetapi memilik parameter atau tipe return yang berbeda. Contoh seperti berikut:

// Function overloading

function add(a: number, b: number): number;
function add(a: string, b: string): string;
function add(a: any, b: any): any {
   return a + b;
}

console.log(add(10,10))
console.log(add("Jhon ","Due"));

Semua tipe function di atas penulisan code dapat menggunakan arrow function seperti berikut :

//Arrow Function
const printName = (name:string)=>{
    console.log(`Your name is ${name}`)
}

printName("Jhon Due");

Source code tutorial Typescript tersedia di github typescript-days

hyvercode

TypeScript Control Flow

Control flow statement adalah proses yang menjelaskan bagaimana program atau perintah ketika akan di eksekusi. Control flow statement biasanya digunakan untuk melakukan percabangan dan perulangan. Dalam TypeScript terdapat beberapa jenis di antaranya :

IF-ELSE Statement

Digunakan untuk mengevaluasi suatu kondisi, jika kondisi tersebut true, maka akan dieksekusi statement yang terdapat pada blok if, jika false, maka akan dieksekusi statement yang terdapat pada blok else.

// IF _ELSE 
let age:number;

age=30

if(age >=30 ){
    console.log("Old Man");
}else{
    console.log("Young Man");
}

//using ternary operator

age>=30?console.log("Old Man"):console.log("Young Man");
$ ts-node ControlStatement.ts 
Old Man
Old Man

Switch Case Statement

Digunakan untuk mengevaluasi suatu ekspresi dan mencocokkannya dengan beberapa kasus, jika ekspresi tersebut sama dengan salah satu kasus, maka akan dieksekusi statement pada blok tersebut.

// Switch Case
let point: number;

point = 70;

switch (point) {
    case 100:
        console.log("Your grade A+");
        break;
    case 90:
        console.log("Your grade A");
        break
    case 80:
        console.log("Your grade B");
        break
    case 70:
        console.log("Your grade C");
        break
    default:
        console.log("Your grade undefined");
        break;
}
$ ts-node ControlStatement.ts 

Your grade C

For loop
Struktur for digunakan untuk melakukan perulangan sejumlah kali yang telah ditentukan

const colors: string[] = ["red", "green", "blue"];
for (let i = 0; i < colors.length; i++) {
  console.log(colors[i]);
}
$ ts-node ControlStatement.ts 
red
green
blue

While loop
Struktur while digunakan untuk melakukan perulangan selama kondisi yang diberikan

let _number: number = 1;
while (_number <= 10) {
  console.log(_number);
  _number++;
}
$ ts-node ControlStatement.ts 
1
2
3
4
5
6
7
8
9
10

Do-while loop
Struktur do-while digunakan untuk melakukan perulangan setidaknya satu kali dan melanjutkan perulangan selama kondisi yang diberikan benar.

let i: number = 1;
do {
  console.log(i);
  i++;
} while (i <= 10);
$ ts-node ControlStatement.ts 
1
2
3
4
5
6
7
8
9
10

Break

Break memungkinkan untuk melalukan terminate pada saat proses looping dan memungkinkan untuk melanjutkan ke prosess seanjutnya tanpa harus menunggu looping sampai selesai.

const colors_: string[] = ["red", "green", "blue"];
for (let i = 0; i < colors_.length; i++) {
  console.log(colors_[i]);
  if (colors_[i] == "green")
        break;
}
$ ts-node ControlStatement.ts 
red
green

Source code tutorial Typescript tersedia di github typescript-days

hyvercode

Data Type In TypeScript

TypeScript mewarisi tipe data dari Javascript, Tipe di TypeScript di kategorikan mejadi :

  • Primitive Type
  • Object Type

Primitive Type

Tipe data primitive adalah tipe data sederhana yang hanya dapat menyimpan satu nilai pada satu waktu. Tipe data primitive pada umumnya adalah sebgai berikut:

  • Number : menyimpan bilangan numerik, baik integer maipun decimal.
  • String : menyimpan teks atau karakter.
  • Boolean : menyimpan nilai tru atau false.
  • Null : menyimpan nilai null, yang menunjukan bahwa suatu variable tidak meiliki nilai.
  • Undefined : menyimpan nilai undefined yang menunjukan bahwa suatu variable belum diberi nilai atau tidak terdefinisi.
  • Symbol : menyimpan nilai yang unik dan tidak dapat diubah.

Object Type

Tipe data object adalah tipe data yang dapat menyimpan beberapa nilai atau properti dalam satu variable. Tipe data object ini meliputi :

  • Array : menyimpan beberapa nilai dalah satu varibale dengan mengukana indeks.
  • Object : menyimpan nilai atau properti dalam satu veriabel dengan mengunakan nama properti.
  • Function : menyimpan kode program yang dapat dipanggil dan diekseskusi kembali.
  • Date : menyimpan tanggal dan waktu
  • ReExp : menyimpan pola atai ekspresi regular.

Berikut contoh pembuatan Type Data di TypeScript

Tipe Data Number

// Number 
let age:number;

age = 90;

console.log(`Type number ${age}`);

//inline initialize

let price = 10000;
let discount = 5.5;

let total:number;

console.log(`Discount amount  = ${price * 5.5/100}`);
$ ts-node data-type.ts 
Type number 90
Discount amount  = 550

Tipe Data String

//String

let _name:string;
_name = "Jhon";

console.log(`My name is ${_name}`);

//concat String

let firstName ="Jhon";
let lastname = "Due";

console.log(`My Fullaname is ${firstName} ${lastname}`);
$ ts-node data-type.ts 
My name is Jhon
My Fullaname is Jhon Due

Tipe Data Boolean

//Boolean

let isActive:boolean;
let inActive:boolean;

isActive = true;
inActive = false;

console.log(`If Active then ${isActive} else InActive ${inActive}`);


isActive?console.log("Your Account Is Active"):console.log("Your Account Inactive");
$ ts-node data-type.ts 
If Active then true else InActive false
Your Account Is Active

Tipe Data Null, Undefined and Symbol

//Null, Undefined & Symbol

let address=null;
let city =undefined
let country:symbol;
country=Symbol("foo");

console.log(`Your address is ${address} \nyour city is ${city} and your country is`);
console.log(country);
$ ts-node data-type.ts 
Your address is null
your city is undefined and your country is
Symbol(foo)

Tipe Data Array

//Array

let fruits=["Apple","Banana","Orange"]

let ages = [10,20,30];

console.log(`I like ${fruits[1]}`);

console.log(`My age is ${ages[2]}`);
$ ts-node data-type.ts 
I like Banana
My age is 30

Tipe Data Object

// Oject 

let person={
    fullName:"Jhon Due",
    age:30,
    hobbies:["Football","Swimming"]
}

console.log(`My name is ${person.fullName} \nmy age is ${person.age} \nand my hobbies is ${person.hobbies}`);
$ ts-node data-type.ts 
my age is 30
and my hobbies is Football,Swimming

Tipe Data Function

//function

let numberA =10;
let numberB = 20;

function getNumber(){
    return numberA+numberB;
}

console.log(`My total number is ${getNumber()}`);
$ ts-node data-type.ts 
My total number is 30

Tipe Data Date

// Date 

let dateNow:Date;

dateNow = new Date();

console.log(`Date now is ${dateNow}`);
$ ts-node data-type.ts 
Date now is Thu Mar 16 2023 22:48:35 GMT+0700 (Western Indonesia Time)

Source code tutorial Typescript tersedia di github typescript-days

hyvercode