TypeScript - Tipi: Una Guida per Principianti

Ciao ciao, futuro superstar del coding! Oggi, ci immergeremo nel mondo affascinante dei tipi di TypeScript. Non preoccuparti se non hai mai scritto una riga di codice prima – sarò il tuo guida amichevole in questo viaggio emozionante. Alla fine di questo tutorial, resterai meravigliato da quanto hai imparato. Allora, mettiamoci all'opera!

TypeScript - Types

Cos'è un Tipo in TypeScript?

Prima di tuffarci in profondità, parliamo di cosa sono i tipi e perché sono importanti. Pensa ai tipi come etichette che mettiamo sui nostri dati. Proprio come organizziamo il nostro armadio con diverse sezioni per camicie, pantaloni e scarpe, i tipi ci aiutano a organizzare il nostro codice e a prevenire che mettiamo, metaforicamente, un calzino nella cassetta delle camicie!

TypeScript è un superinsieme di JavaScript che aggiunge la tipizzazione statica opzionale. Questo significa che possiamo dire esattamente a TypeScript che tipo di dati stiamo usando, il che aiuta a catturare errori prima che il nostro codice venga eseguito. È come avere un amico utile che guarda sopra la tua spalla, segnalando potenziali errori prima che li fai.

Il Tipo Any: La Carta Wild di TypeScript

Iniziamo con il tipo più flessibile in TypeScript: any. È come il jolly in un mazzo di carte – può essere qualsiasi cosa!

let miaVariabile: any = 42;
miaVariabile = "Ciao, Mondo!";
miaVariabile = true;

In questo esempio, miaVariabile può essere un numero, poi una stringa, poi un booleano. È molto flessibile, ma con grande potere viene grande responsabilità. Usare any troppo spesso vanifica lo scopo di usare TypeScript, quindi usalo con parsimonia!

Tipi Incorporati: I Mattoni di TypeScript

TypeScript arriva con diversi tipi incorporati che coprono la maggior parte delle nostre esigenze. Esploriamoli uno per uno:

1. Number

let età: number = 30;
let prezzo: number = 9.99;

I numeri in TypeScript possono essere interi o valori a virgola mobile. Non c'è bisogno di preoccuparsi di diversi tipi di numeri come in alcune altre lingue!

2. String

let nome: string = "Alice";
let saluto: string = `Ciao, ${nome}!`;

Le stringhe possono essere definite con apici singoli, doppi o backtick. I backtick ci permettono di inserire espressioni utilizzando ${}.

3. Boolean

let èStudente: boolean = true;
let haSuperatoEsame: boolean = false;

I booleani sono semplici – sono soit true soit false. Pensali come domande sì/no per il tuo codice.

4. Array

let numeri: number[] = [1, 2, 3, 4, 5];
let frutti: Array<string> = ["mela", "banana", "arancia"];

Gli array possono contenere più valori dello stesso tipo. Li possiamo definire utilizzando parentesi quadre o la sintassi Array<T>.

5. Tuple

let persona: [string, number] = ["Alice", 30];

Le tuple sono array con un numero fisso di elementi, dove ogni elemento può avere un tipo diverso. Sono come una piccola scatola organizzata con compartimenti specifici per ogni oggetto.

6. Enum

enum Colore {
Rosso,
Verde,
Blu
}
let colorePreferito: Colore = Colore.Blu;

Le enum ci permettono di definire un set di costanti denominate. Sono fantastiche per rappresentare un set fisso di opzioni.

7. Void

function logMessage(messaggio: string): void {
console.log(messaggio);
}

Void viene utilizzato per indicare che una funzione non restituisce nulla. È come inviare una lettera senza aspettarsi una risposta.

8. Null e Undefined

let nonDefinito: undefined = undefined;
let vuoto: null = null;

Questi tipi rappresentano l'assenza di un valore. Sono come scatole vuote – una che è intenzionalmente vuota (null) e una che non è stata ancora riempita (undefined).

Ecco una tabella che riassume i tipi incorporati che abbiamo trattato:

Tipo Descrizione Esempio
number Valori numerici (interi o a virgola mobile) let età: number = 30;
string Dati testuali let nome: string = "Alice";
boolean Valori true o false let èStudente: boolean = true;
array Collezione di valori dello stesso tipo let numeri: number[] = [1, 2, 3];
tuple Array di lunghezza fissa con elementi di tipi specifici let persona: [string, number] = ["Alice", 30];
enum Set di costanti denominate enum Colore { Rosso, Verde, Blu }
void Assenza di un valore di ritorno in funzioni function logMessage(messaggio: string): void { ... }
null Assenza intenzionale di qualsiasi valore oggetto let vuoto: null = null;
undefined Variabile che non è stata assegnata un valore let nonDefinito: undefined = undefined;

Tipi Definiti dall'Utente: Creare i Propri Strumenti

Ora che abbiamo coperto i tipi incorporati, parliamo di come puoi creare i tuoi tipi personalizzati. Questo è dove TypeScript davvero brilla!

1. Interfacce

Le interfacce ci permettono di definire la struttura di un oggetto. Pensale come bozze per oggetti.

interface Persona {
nome: string;
età: number;
greet(): void;
}

let alice: Persona = {
nome: "Alice",
età: 30,
greet() {
console.log(`Ciao, il mio nome è ${this.nome}`);
}
};

In questo esempio, abbiamo definito un'interfaccia Persona e creato un oggetto che segue questa struttura. È come creare un modulo che le persone devono compilare – tutti devono fornire le stesse informazioni.

2. Classi

Le classi sono un modo per creare componenti riutilizzabili. Sono come tagliapasta – definisci la forma una volta e poi puoi fare tanti biscotti (oggetti) quanto vuoi!

class Studente {
nome: string;
voto: number;

constructor(nome: string, voto: number) {
this.nome = nome;
this.voto = voto;
}

studia() {
console.log(`${this.nome} sta studiando duro!`);
}
}

let bob = new Studente("Bob", 10);
bob.studia(); // Output: "Bob sta studiando duro!"

Qui, abbiamo creato una classe Studente con proprietà (nome e voto) e un metodo (studia). Possiamo creare tanti studenti quanti vogliamo utilizzando questa classe.

3. Alias di Tipo

Gli alias di tipo ci permettono di creare nuovi nomi per i tipi. Sono utili per creare tipi complessi o dare nomi più significativi ai tipi esistenti.

type Punto = {
x: number;
y: number;
};

let centro: Punto = { x: 0, y: 0 };

In questo esempio, abbiamo creato un tipo Punto che rappresenta un punto nello spazio 2D. È un modo semplice per raggruppare proprietà correlate.

4. Tipi Unione

I tipi unione permettono a un valore di essere uno di diversi tipi. È come dire, "Questo può essere questo o quello."

type Risultato = number | string;

function getRisultato(valore: boolean): Risultato {
return valore ? "Successo" : 404;
}

Qui, Risultato può essere sia un numero che una stringa. Questo è utile quando un valore può essere di diversi tipi a seconda di determinate condizioni.

5. Tipi Intersezione

I tipi intersezione combinano più tipi in uno. È come dire, "Questo deve essere questo E quello."

interface Colorato {
colore: string;
}

interface Cerchio {
raggio: number;
}

type CerchioColorato = Colorato & Cerchio;

let ilMioCerchio: CerchioColorato = {
colore: "rosso",
raggio: 5
};

In questo esempio, CerchioColorato è sia Colorato che un Cerchio. Deve avere sia un colore che un raggio.

Ecco lì! Abbiamo coperto le basi dei tipi di TypeScript, dal flessibile any ai tipi incorporati e quelli definiti dall'utente. Ricorda, i tipi in TypeScript sono come i tuoi superpoteri di coding – ti aiutano a scrivere codice più pulito e affidabile e a catturare errori prima che diventino problemi.

Mentre continui il tuo viaggio con TypeScript, continua a sperimentare con questi tipi. Prova a combinarli in diversi modi e non aver paura di fare errori – è così che impariamo! Prima di sapere, sarai un esperto di digitazione, creando codice robusto e privo di errori.

Buon coding, e possa i tuoi tipi sempre essere forti!

Credits: Image by storyset