Συνάρτηση Γενικευμένου Τύπου στο TypeScript

Στα προηγούμενα μαθήματα, δημιουργήσαμε μια συνάρτηση ταυτότητας, που δέχονταν παραμέτρους γενικευμένου τύπου. Τώρα θα μάθουμε να περιγράφουμε τον τύπο μιας τέτοιας συνάρτησης και να δημιουργούμε γενικευμένα interfaces.

Μια συνάρτηση γενικευμένου τύπου μπορεί επίσης να γραφτεί και σε μορφή βέλους. Ας δηλώσουμε μια μεταβλητή func, της οποίας ο τύπος θα είναι γενικευμένης συνάρτησης:

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

let func: <T> (data: T) => T = myFunc;

Μπορεί να οριστεί και ένα άλλο σύμβολο για τον γενικευμένο τύπο μιας τέτοιας μεταβλητής. Το κύριο πράγμα είναι να προσέχετε ώστε τα ονόματα των τύπων να μην έρχονται σε διένεξη:

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

let func: <U> (data: U) => U = myFunc;

Ο γενικευμένος τύπος μπορεί να γραφτεί, περικλείοντας την υπογραφή κλήσης και τον τύπο της συνάρτησης σε άγκιστρα:

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

let func: {<U> (data: U): U} = myFunc;
Задание 1

Γράψτε μια συνάρτηση για τον προσδιορισμό του μήκους ενός πίνακα γενικευμένου τύπου στις παραλλαγές, που περιγράφονται σε αυτό το μάθημα.