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' ]