Pembolehubah Jenis Umum dalam TypeScript

Untuk pemahaman yang lebih baik tentang konsep generik, mari kita cipta fungsi pertama kita - fungsi identiti. Fungsi sedemikian mengembalikan tepat apa yang diberikan kepadanya - dengan jenis yang sama.

Mari kita tulis varian fungsi kita secara berasingan terlebih dahulu.

Tulis fungsi yang menerima nombor sebagai parameter dan mengembalikan nombor:

typescriptfunction func(data: number): number {
  return data;
}

Sekarang tulis fungsi yang menerima rentetan sebagai parameter dan mengembalikan rentetan:

typescriptfunction func(data: string): string {
  return data;
}

Katakan sekarang kita ingin membuat supaya semua ini dilakukan oleh satu fungsi. Iaitu kita mahu melakukan penggenerikan.

Untuk ini, kita menggunakan pembolehubah jenis umum, yang menyimpan jenis data dalam dirinya. Pembolehubah sedemikian diisytiharkan dalam kurungan sudut sebelum kurungan bulat dengan parameter fungsi. Mari kita isytiharkan pembolehubah sedemikian, memberikannya nama T (boleh sebarang nama):

typescriptfunction func <T>(parameter di sini) {
  return data;
}

Selepas ini, kita akan mempunyai pembolehubah T, yang boleh digunakan untuk meletakkan jenis parameter ke dalamnya, kemudian menyebutnya sebagai jenis nilai pemulangan.

Tentukan jenis parameter kita dalam bentuk pembolehubah kita:

typescriptfunction func <T>(data: T) {
  return data;
}

Hasilnya, parameter boleh diberikan dalam sebarang jenis, dan jenis ini akan disimpan dalam pembolehubah kita T.

Sekarang gunakan nilai pembolehubah T sebagai penunjuk hasil fungsi:

typescriptfunction func <T>(data: T): T {
  return data;
}

Sekarang hasilnya, jenis hasil fungsi akan diperoleh daripada jenis parameter. Mari kita ujinya.

Panggil fungsi dengan nombor:

typescriptconsole.log( func(3) );   // akan memaparkan 3

Panggil fungsi dengan rentetan:

typescriptconsole.log( func('x') ); // akan memaparkan 'x'
Задание 1

Buat fungsi yang menerima sama ada dua nombor, atau dua rentetan sebagai parameter. Fungsi tersebut harus mengembalikan hasil tambah parameter.