Penggunaan Parameter Tipe dalam Batasan Generik di TypeScript
TypeScript juga memiliki kemampuan mendeklarasikan satu parameter tipe, yang akan dibatasi oleh parameter tipe lainnya. Ini diperlukan ketika kita harus menyalin properti dari satu objek ke objek lain, sambil melindungi diri dari kemungkinan kita mengirimkan properti yang tidak diperlukan.
Mari kita lihat contoh berikut. Kembali
ke fungsi myFunc yang menentukan
panjang variabel:
typescriptfunction myFunc <T> (data: T): T {
console.log(data.length); // error
return data;
}
Namun sekarang kita ingin fungsi ini
hanya bekerja dengan tipe-tipe yang
memiliki properti length. Untuk itu, buatlah
interface ILength, dan berikan
properti length bertipe number:
typescriptinterface ILength {
length: number;
}
Selanjutnya, dalam fungsi kita, tentukan tipe generik
yang mewarisi dari ILength
melalui kata kunci extends:
typescriptfunction myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Berikut adalah kode lengkap kita:
typescriptinterface ILength {
length: number;
}
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Mari kita uji fungsi kita dan cari panjang string:
typescriptconsole.log(myFunc('abcde'));
Hasil kode yang dijalankan:
typescript5
'abcde'
Sekarang mari kita berikan array sebagai parameter:
typescriptconsole.log(myFunc(['a', 'b', 'c']));
Hasil kode yang dijalankan:
typescript3
[ 'a', 'b', 'c' ]