Interfacce generiche
Fa parte della sezione Introduzione a TypeScript del percorso JavaScript di Coddy. Lezione 61 di 73.
Proprio come puoi creare funzioni generiche, puoi anche creare interfacce generiche. Questo ti permette di definire la struttura di un oggetto mantenendo flessibili e riutilizzabili i tipi di alcune proprietà.
Ecco come creare un'interfaccia generica usando la stessa sintassi dei parametri di tipo:
interface Container<T> {
value: T;
isEmpty: boolean;
}<T> dopo il nome dell'interfaccia crea un parametro di tipo che può essere usato in tutta la definizione dell'interfaccia. In questo esempio, la proprietà value avrà il tipo specificato quando si usa l'interfaccia, mentre isEmpty rimane di tipo boolean fisso.
Quando usi un'interfaccia generica, specifichi il tipo concreto tra parentesi angolari:
const stringContainer: Container<string> = {
value: "hello",
isEmpty: false
};
const numberContainer: Container<number> = {
value: 42,
isEmpty: false
};Sfida
FacileCrea un'interfaccia generica denominata Result che possa contenere dati di qualsiasi tipo insieme alle informazioni sull'esito positivo.
L'interfaccia deve avere due proprietà:
successdi tipobooleandatadi tipoT(il parametro di tipo generico)
Crea i seguenti oggetti usando la tua interfaccia generica:
stringResultdi tipoResult<string>consuccess: trueedata: "Operation completed"numberResultdi tipoResult<number>consuccess: trueedata: 42booleanResultdi tipoResult<boolean>consuccess: falseedata: falsearrayResultdi tipoResult<string[]>consuccess: trueedata: ["item1", "item2", "item3"]
Crea una funzione generica denominata processResult che:
- Usa un parametro di tipo generico
T - Accetta un parametro
resultdi tipoResult<T> - Restituisce un messaggio di tipo stringa
- Se
successètrue, restituisce"Success: [data]" - Se
successèfalse, restituisce"Failed: [data]"
Stampa i seguenti output:
- Stampa il risultato della chiamata a
processResultconstringResult - Stampa il risultato della chiamata a
processResultconnumberResult - Stampa il risultato della chiamata a
processResultconbooleanResult - Stampa il risultato della chiamata a
processResultconarrayResult - Stampa
stringResult.data
Provalo tu
// TODO: Scrivi il tuo codice qui
// Crea l'interfaccia generica Result
// Crea gli oggetti usando l'interfaccia Result
// Crea la funzione generica processResult
// Stampa gli output richiestiQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Introduzione a TypeScript
1Primi passi con TS
Che cos'è TypeScript?Perché usare TypeScript?Il tuo primo codice TypeScriptProcesso di compilazione ed erroriRiepilogo: introduzione a TS4Lavorare con le funzioni
Tipizzare parametri e valori restituitiTipizzare le funzioni frecciaIl tipo restituito 'void'Parametri opzionali con '?'Valori predefiniti dei parametriTipizzare i parametri restDefinire i tipi di funzioneRiepilogo: creare funzioni tipizzate2Tipi fondamentali
Tipi di base: str, num, booleanIl tipo 'any': via di fugaIl tipo 'unknown'Lavorare con 'null' e 'undef'L'inferenza dei tipi in azioneAnnotazioni esplicite dei tipiRiepilogo: esercitazioni sui tipi fondamentali5Tipi: alias, unioni e intersezioni
Alias di tipo per i primitiviTipi unione ('|')Lavorare con i tipi unioneTipi letteraliTipi intersezione ('&')Combinare alias di tipoRiepilogo: combinazioni avanzate di tipi3Strutture dati: Array e Tuple
Array tipizzatiModificatore 'readonly' per gli arrayChe cos'è una Tuple?Dichiarare e accedere alle TupleDestrutturare le TupleTuple di sola letturaArray tipizzati multidimensionaliOperatore spread con gli arrayRiepilogo: Array e Tuple6Tipizzazione di oggetti e interfacce
Annotazioni inline dei tipi degli oggettiAlias di tipo per gli oggettiIntroduzione alle interfacceInterfacce e alias di tipo a confrontoProprietà facoltative e di sola letturaEstendere interfacce e tipiAggiungere metodi alle interfacceRiepilogo: definire le forme degli oggetti9Generics: una prima occhiata
Il problema risolto dai GenericsCreare una funzione identità genericaUsare una funzione genericaArray genericiInterfacce genericheRipasso: esercizi con funzioni genericheEsercitati da solo: Playground TypeScript