Langsung ke konten utama

[Easy] Tipe Dasar dan Anotasi Tipe

1. Apa saja tipe dasar TypeScript?

Tipe dasar apa yang disediakan TypeScript?

TypeScript menambahkan sistem tipe statis di atas JavaScript. Anda bisa memberi anotasi pada variabel, parameter fungsi, dan nilai return untuk menangkap kesalahan sebelum runtime.

Tipe primitif umum

let age: number = 30;
let price: number = 99.99;

let userName: string = 'John';
let message: string = `Hello, ${userName}`;

let isActive: boolean = true;

null dan undefined

let emptyValue: null = null;
let notAssigned: undefined = undefined;

Dengan strictNullChecks diaktifkan, null dan undefined tidak bisa ditugaskan ke setiap tipe.

2. Apa itu tipe objek, array, dan tuple?

Tipe objek (Object Type)

type User = {
id: number;
name: string;
email?: string;
};

const user: User = {
id: 1,
name: 'Pitt',
};

Tipe array (Array Type)

const scores: number[] = [80, 90, 100];
const tags: Array<string> = ['ts', 'react'];

Tipe tuple (Tuple Type)

Tuple memiliki panjang tetap dan posisi yang tetap.

const point: [number, number] = [10, 20];
const userRecord: [number, string, boolean] = [1, 'Alice', true];

3. Apa itu tipe union dan literal?

Tipe union (Union Type)

let id: string | number = 'A001';
id = 1001;

Tipe literal (Literal Type)

type Status = 'idle' | 'loading' | 'success' | 'error';

let requestStatus: Status = 'idle';
requestStatus = 'success';

Union dan literal berguna untuk memodelkan state yang terbatas.

4. Apa itu any, unknown, void, dan never?

any

any menonaktifkan keamanan tipe. Gunakan hanya sebagai jalan keluar sementara.

let data: any = 10;
data = 'text';
data = { ok: true };

unknown

unknown lebih aman dari any. Anda harus mempersempit tipe sebelum menggunakan.

function printLength(value: unknown): void {
if (typeof value === 'string') {
console.log(value.length);
}
}

void

void biasanya berarti sebuah fungsi tidak mengembalikan nilai.

function logMessage(message: string): void {
console.log(message);
}

never

never berarti sebuah nilai tidak pernah bisa terjadi.

function fail(message: string): never {
throw new Error(message);
}

5. Bagaimana cara kerja anotasi tipe fungsi?

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

const multiply = (a: number, b: number): number => a * b;

Parameter opsional dan default

function greet(name: string, title?: string): string {
return title ? `${title} ${name}` : name;
}

function formatPrice(price: number, currency: string = 'USD'): string {
return `${currency} ${price.toFixed(2)}`;
}

6. Apa itu type inference?

TypeScript bisa menyimpulkan tipe dari nilai.

let count = 0; // disimpulkan sebagai number
const framework = 'React'; // disimpulkan sebagai string literal 'React'

Anda tidak perlu anotasi di mana-mana. Tambahkan anotasi eksplisit di mana API atau batasan harus jelas.

7. Kesalahan umum dan best practice

Kesalahan umum

  • Penggunaan any berlebihan
  • Lupa mode strict
  • Menggunakan tipe luas di mana union literal lebih baik

Best practice

  • Aktifkan strict mode di tsconfig.json
  • Lebih baik unknown daripada any
  • Gunakan tipe union/literal untuk pemodelan state
  • Buat signature fungsi publik secara eksplisit

8. Jawaban cepat wawancara

Q1: Mengapa menggunakan tipe dasar TypeScript?

Untuk menangkap ketidakcocokan tipe pada waktu kompilasi dan meningkatkan tooling IDE.

Q2: any vs unknown?

any keluar dari pengecekan. unknown memaksa penyempitan tipe sebelum penggunaan.

Q3: Kapan harus menggunakan tuple daripada array?

Gunakan tuple ketika posisi dan panjang tetap dan bermakna.