Batasan Generik di TypeScript
Dalam salah satu pelajaran sebelumnya, kita membuat fungsi tipe generik yang seharusnya menghasilkan panjang parameter yang diteruskan ke dalamnya. Namun, saat kompilasi kami mendapat error, karena tidak semua tipe dapat memiliki panjang:
function myFunc < T > (data: T): T {
console.log(data.length); // error
return data;
}
Pada saat itu, kami memperbaiki situasi dengan mengubah
tipe generik menjadi tipe array generik.
Tapi di TypeScript ada cara untuk membuat
batasan generik. Untuk melakukan ini, dalam tanda kurung siku,
setelah variabel T tulis
kata kunci extends. Setelah itu
dalam kurung kurawal tulis variabel baru
str bertipe string.
Sisa kode fungsi akan tetap tidak
berubah:
function myFunc <T extends {str: string}> (data: T): void {
console.log(data.str.length);
}
Jadi, tipe generik mewarisi tipe
variabel str, yang ditentukan dalam kurung
kurawal. Sekarang mari kita periksa kerja
fungsi kita dan buat variabel myStr,
yang merujuk ke tipe str, dan berikan
nya nilai dalam kurung kurawal:
let myStr: {str: string} = {str: 'abcde'};
Mari kita panggil fungsi myFunc, jangan
lupa untuk menentukan tipenya lagi dan teruskan
variabel myStr sebagai parameter:
myFunc <{str: string}> (myStr);
Berdasarkan contoh yang dibahas dalam pelajaran, tetapkan fungsi untuk mencari panjang array numerik.