Tipi primitivi
TypeScript supporta 7 tipi primitivi. Un tipo di dati primitivo si riferisce a un tipo che non è un oggetto e non ha metodi associati. In TypeScript, tutti i tipi primitivi sono immutabili, il che significa che i loro valori non possono essere modificati una volta assegnati.
string
Il tipo primitivo string memorizza dati testuali e il valore è sempre racchiuso tra virgolette doppie o singole.
const x: string = 'x';const y: string = 'y';Le stringhe possono estendersi su più righe se racchiuse dal carattere di apice inverso (`):
let sentence: string = `xxx,yyy`;boolean
Il tipo di dati boolean in TypeScript memorizza un valore binario, true o false.
const isReady: boolean = true;number
Un tipo di dati number in TypeScript è rappresentato da un valore in virgola mobile a 64 bit. Un tipo di dati number può rappresentare numeri interi e frazioni.
TypeScript supporta anche i sistemi di numerazione esadecimale, binario e ottale, ad esempio:
const decimal: number = 10;const hexadecimal: number = 0xa00d; // L'esadecimale inizia con 0xconst binary: number = 0b1010; // Il binario inizia con 0bconst octal: number = 0o633; // L'ottale inizia con 0obigInt
Un bigInt rappresenta valori numerici molto grandi (253 – 1) e non possono essere rappresentati con un number.
Un bigInt può essere creato chiamando la funzione integrata BigInt() o aggiungendo n alla fine di qualsiasi letterale numerico intero:
const x: bigint = BigInt(9007199254740991);const y: bigint = 9007199254740991n;Note:
- I valori
bigIntnon possono essere combinati connumbere non possono essere utilizzati conMathintegrato, devono essere forzati allo stesso tipo. - I valori
bigIntsono disponibili solo se la configurazione di destinazione è ES2020 o superiore.
Simbolo
I simboli sono identificatori univoci che possono essere utilizzati come chiavi di proprietà negli oggetti per evitare conflitti di denominazione.
type Obj = { [sym: symbol]: number;};
const a = Symbol('a');const b = Symbol('b');let obj: Obj = {};obj[a] = 123;obj[b] = 456;
console.log(obj[a]); // 123console.log(obj[b]); // 456null e undefined
I tipi null e undefined rappresentano entrambi nessun valore o l’assenza di qualsiasi valore.
Il tipo undefined indica che il valore non è assegnato o inizializzato o indica un’assenza involontaria di valore.
Il tipo null indica che sappiamo che il campo non ha un valore, quindi il valore non è disponibile, e indica un’assenza intenzionale di valore.
Array
Un array è un tipo di dati che può memorizzare più valori dello stesso tipo o meno. Può essere definito utilizzando la seguente sintassi:
const x: string[] = ['a', 'b'];const y: Array<string> = ['a', 'b'];const j: Array<string | number> = ['a', 1, 'b', 2]; // UnioneTypeScript supporta array di sola lettura utilizzando la seguente sintassi:
const x: readonly string[] = ['a', 'b']; // Modificatore di sola letturaconst y: ReadonlyArray<string> = ['a', 'b'];const j: ReadonlyArray<string | number> = ['a', 1, 'b', 2];j.push('x'); // Non validoTypeScript supporta tuple e tuple di sola lettura:
const x: [string, number] = ['a', 1];const y: readonly [string, number] = ['a', 1];any
Il tipo di dati “any` rappresenta letteralmente un valore “qualsiasi”, ed è il valore predefinito quando TypeScript non può dedurre il tipo o non è specificato.
Quando si utilizza any, il compilatore TypeScript salta il controllo del tipo, quindi non c’è sicurezza di tipo quando si utilizza any. In genere, non utilizzare any per silenziare il compilatore quando si verifica un errore, ma concentrarsi sulla correzione dell’errore, poiché utilizzando any è possibile interrompere i contratti e perdere i vantaggi del completamento automatico di TypeScript.
Il tipo any potrebbe essere utile durante una migrazione graduale da JavaScript a TypeScript, in quanto può silenziare il compilatore.
Per i nuovi progetti, utilizzare la configurazione TypeScript noImplicitAny, che consente a TypeScript di generare errori quando viene utilizzato o dedotto any.
Il tipo any è solitamente fonte di errori che possono mascherare problemi reali con i tipi. Evitatelo il più possibile.