[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
anyberlebihan - Lupa mode
strict - Menggunakan tipe luas di mana union literal lebih baik
Best practice
- Aktifkan strict mode di
tsconfig.json - Lebih baik
unknowndaripadaany - 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.