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:

typescriptfunction 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:

typescriptinterface ILength {
  length: number;
}

Seterusnya, dalam fungsi kita, tetapkan jenis generik yang mewarisi ILength melalui kata kunci extends:

typescriptfunction myFunc <T extends ILength> (data: T): T {
  console.log(data.length);
  return data;
}

Berikut adalah kod penuh kami:

typescriptinterface 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:

typescriptconsole.log(myFunc('abcde'));

Hasil kod yang dilaksanakan:

typescript5
'abcde'

Dan sekarang mari kita hantar array sebagai parameter:

typescriptconsole.log(myFunc(['a', 'b', 'c']));

Hasil kod yang dilaksanakan:

typescript3
[ 'a', 'b', 'c' ]