fungsicallbacktipeMenengah4 mnt baca

Typing Fungsi

Tipe parameter, return type, dan function type untuk callback yang aman.

Anatomi Fungsi Bertipe

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

Dua anotasi di sini: tipe parameter a: number, b: number dan return type : number. Keduanya wajib eksplisit untuk parameter; return type bisa di-infer tapi menuliskannya adalah dokumentasi gratis.

Return Type Khusus

typescript
function logPesan(pesan: string): void {
  console.log(pesan);
  // tidak return apa-apa
}

function selaluError(): never {
  throw new Error("gagal");
  // tidak pernah return normal
}

void untuk fungsi tanpa return value. never untuk fungsi yang tidak pernah selesai normal (selalu throw atau infinite loop). Bedakan dengan undefined: fungsi void boleh tidak return, tapi tetap "selesai".

Function Type: Tipe untuk Variabel Fungsi

typescript
type Validator = (nilai: string) => boolean;

const cekEmail: Validator = (email) => email.includes("@");
const cekKosong: Validator = (teks) => teks.length > 0;

Ini fondasi callback yang aman. Tanpa function type, callback sering diketik any dan errornya baru muncul saat dipanggil dengan argumen salah.

Contextual Typing: Bantuan Otomatis

Saat fungsi dipakai di posisi yang tipenya sudah diketahui, TypeScript mengisi tipe parameter sendiri:

typescript
const angka = [1, 2, 3];
const kuadrat = angka.map((n) => n * n); // n otomatis number, tidak perlu ditulis

Kamu tidak perlu menulis (n: number) karena map pada number[] sudah memberi tahu compiler. Tulis annotation hanya saat konteksnya belum jelas.

Catatan teknis: Hati-hati dengan overload palsu via union parameter. function f(x: string | number) bukan overload, dan di dalamnya kamu tetap harus narrowing sebelum memakai method spesifik string atau number. Untuk signature yang benar-benar berbeda, TypeScript mendukung function overloads, tapi itu topik lanjutan.