function tambah ( a : number , b : number ) : number {
return a + b;
}
// Arrow function dengan tipe eksplisit
const kali : ( a : number , b : number ) => number = ( a , b ) => a * b;
// Function expression
const kurangi = function ( a : number , b : number ) : number {
return a - b;
};
// Optional parameter dengan ?
function salam ( nama : string , pesan ?: string ) : string {
if (pesan) {
return `${ pesan }, ${ nama }!` ;
}
return `Halo, ${ nama }!` ;
}
// Default parameter
function sapa ( nama : string , pesan : string = "Halo" ) : string {
return `${ pesan }, ${ nama }!` ;
}
salam ( "Budi" ); // "Halo, Budi!"
salam ( "Budi" , "Selamat" ); // "Selamat, Budi!"
function jumlahkan ( ... angka : number []) : number {
return angka. reduce (( total , n ) => total + n, 0 );
}
jumlahkan ( 1 , 2 , 3 , 4 , 5 ); // 15
function proses ( input : string ) : string ;
function proses ( input : number ) : number ;
function proses ( input : string | number ) : string | number {
if ( typeof input === "string" ) {
return input. toUpperCase ();
}
return input * 2 ;
}
proses ( "hello" ); // "HELLO"
proses ( 5 ); // 10
function prosesInput ( input : string | number ) {
if ( typeof input === "string" ) {
// TypeScript tahu input adalah string di sini
return input. toUpperCase ();
} else {
// TypeScript tahu input adalah number di sini
return input. toFixed ( 2 );
}
}
interface Lingkaran {
jenis : "lingkaran" ;
radius : number ;
}
interface Persegi {
jenis : "persegi" ;
sisi : number ;
}
type Bentuk = Lingkaran | Persegi ;
function hitungLuas ( bentuk : Bentuk ) : number {
switch (bentuk.jenis) {
case "lingkaran" :
return Math. PI * bentuk.radius ** 2 ;
case "persegi" :
return bentuk.sisi ** 2 ;
}
}