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:

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

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

typescriptlet myStr: {str: string} = {str: 'abcde'};

Mari kita panggil fungsi myFunc, jangan lupa untuk menentukan tipenya lagi dan teruskan variabel myStr sebagai parameter:

typescriptmyFunc <{str: string}> (myStr);
Задание 1

Berdasarkan contoh yang dibahas dalam pelajaran, tetapkan fungsi untuk mencari panjang array numerik.