Penggunaan Parameter Jenis dalam Kekangan Generik dalam TypeScript
TypeScript juga mempunyai keupayaan perisytiharan satu parameter jenis, yang akan dihadkan oleh parameter jenis yang lain. Ini diperlukan apabila perlu menyalin sifat dari satu objek ke objek lain, sambil melindungi diri dari menghantar sifat berlebihan.
Mari kita lihat contoh berikut. Kembali
kepada fungsi myFunc yang
menentukan panjang pemboleh ubah:
function myFunc <T> (data: T): T {
console.log(data.length); // ralat
return data;
}
Walau bagaimanapun, sekarang kita mahu fungsi ini
berfungsi hanya dengan jenis yang
mempunyai sifat length. Untuk ini, mari buat
antaramuka ILength dan tetapkan
sifat length jenis nombor:
interface ILength {
length: number;
}
Seterusnya, dalam fungsi kita, tetapkan jenis
generik yang mewarisi ILength
melalui kata kunci extends:
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Berikut adalah kod penuh kami:
interface ILength {
length: number;
}
function myFunc <T extends ILength> (data: T): T {
console.log(data.length);
return data;
}
Mari kita uji fungsi kami dan cari panjang rentetan:
console.log(myFunc('abcde'));
Hasil kod yang dilaksanakan:
5
'abcde'
Dan sekarang mari kita hantar array sebagai parameter:
console.log(myFunc(['a', 'b', 'c']));
Hasil kod yang dilaksanakan:
3
[ 'a', 'b', 'c' ]