Overload fungsi & tanda tangan pemanggilan
Deklarasikan tanda tangan overload untuk berbagai bentuk pemanggilan dan gunakan tanda tangan pemanggilan di dalam tipe objek untuk API yang fleksibel.
Overload fungsi & tanda tangan pemanggilan adalah pelajaran TypeScript Academy gratis di CoddyKit. Ini adalah pelajaran 1 dari 3. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar TypeScript Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus TypeScript Academy mencakup 3 pelajaran total.
Pengantar
Tujuan: Modelkan fungsi yang menerima masukan berbeda dan mengembalikan keluaran berbeda menggunakan kelebihan beban, serta deskripsikan tanda tangan pemanggilan dalam tipe objek untuk antarmuka seperti panggilan balik.
Pola kelebihan beban
Kelebihan beban dideklarasikan sebagai beberapa tanda tangan ditambah satu implementasi yang mempersempit masukan dan mengembalikan tipe yang tepat.
// 1) Overload signatures (no body)
function parse(input: string): number;
function parse(input: number): string;
// 2) Single implementation compatible with all overloads
function parse(input: string | number): string | number {
if (typeof input === "string") {
return input.length; // string -> number
} else {
return String(input); // number -> string
}
}
console.log(parse("TS")); // 2 (number)
console.log(parse(123)); // "123" (string)Signature pemanggilan
Signature pemanggilan memungkinkan tipe objek dipanggil dengan beberapa overload (berguna untuk pustaka yang menyediakan fungsi yang dapat dipanggil beserta propertinya).
type Stringify = {
(v: number): string;
(v: boolean): string;
};
const toStr: Stringify = (v: number | boolean) => {
return typeof v === "number" ? v.toFixed(1) : (v ? "true" : "false");
};
console.log(toStr(3));
console.log(toStr(false));Penyempitan dalam implementasi
Implementasi harus menangani semua bentuk overload. Gunakan pemeriksaan in atau union terdiskriminasi untuk melakukan percabangan dengan aman.
function area(value: { r: number } | { w: number; h: number }): number {
if ("r" in value) {
return Math.PI * value.r ** 2; // circle
}
return value.w * value.h; // rect
}
console.log(area({ r: 2 }));
console.log(area({ w: 3, h: 4 }));Overload vs union
Overload vs union:
- Overload memberikan tipe hasil yang tepat pada setiap pemanggilan.
- Union mempertahankan satu signature, lebih sederhana tetapi kurang spesifik.
- Pilih overload ketika pemanggil memperoleh manfaat dari tipe hasil yang tepat.
Tips DX
Tips:
- Jaga jumlah overload tetap sedikit dan jelas.
- Dokumentasikan perbedaan pada parameter dan hasil.
- Utamakan ketepatan tipe hasil jika hal itu meningkatkan pengalaman pengguna.
Pemeriksaan overload
Pemeriksaan singkat: Pola mana yang mendeklarasikan overload fungsi dengan benar?
Rangkuman
Rangkuman: Gunakan overload untuk tipe yang tepat pada setiap pemanggilan dan signature pemanggilan untuk memodelkan objek yang dapat dipanggil. Lakukan penyempitan di dalam satu implementasi untuk mencakup setiap kasus.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Overload fungsi & tanda tangan pemanggilan” gratis?
Ya — teks lengkap “Overload fungsi & tanda tangan pemanggilan” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus TypeScript Academy, upgrade ke CoddyKit PRO. Kursus TypeScript Academy mencakup 3 pelajaran total.
Apa yang akan aku pelajari di “Overload fungsi & tanda tangan pemanggilan”?
Deklarasikan tanda tangan overload untuk berbagai bentuk pemanggilan dan gunakan tanda tangan pemanggilan di dalam tipe objek untuk API yang fleksibel. Kamu berlatih TypeScript Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai TypeScript Academy?
Tidak diperlukan pengalaman sebelumnya. TypeScript Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 1 dari 3.
Berapa lama pelajaran “Overload fungsi & tanda tangan pemanggilan” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran TypeScript Academy ini?
Ya. Setiap pelajaran TypeScript Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Overload fungsi & tanda tangan pemanggilan
- Pengetikan parameter this; void, never
- Fungsi assertion & penjaga tipe buatan pengguna