Parlami dei tipi utilitaristici in TypeScript.
sobes.tech AI
Risposta dell'AI
I tipi utilitaristici in TypeScript sono tipi incorporati che consentono di trasformare tipi di dati esistenti in nuovi tipi, eseguendo varie operazioni utili. Aiutano ad aumentare la flessibilità e la riutilizzabilità dei tipi, riducendo la ridondanza del codice.
Tipi utilitari principali:
-
Partial<Type>: Crea un nuovo tipo in cui tutte le proprietà di
Typediventano opzionali.interface User { id: number; name: string; age: number; } type PartialUser = Partial<User>; // PartialUser sarà { id?: number; name?: string; age?: number; } -
Readonly<Type>: Crea un nuovo tipo in cui tutte le proprietà di
Typesono di sola lettura.interface Point { x: number; y: number; } type ReadonlyPoint = Readonly<Point>; // ReadonlyPoint sarà { readonly x: number; readonly y: number; } -
Pick<Type, Keys>: Crea un tipo selezionando un insieme specifico di proprietà
KeysdiType.interface Product { id: number; name: string; price: number; description: string; } type ProductSummary = Pick<Product, 'id' | 'name' | 'price'>; // ProductSummary sarà { id: number; name: string; price: number; } -
Omit<Type, Keys>: Crea un tipo escludendo un insieme specifico di proprietà
KeysdiType.interface Order { id: number; productId: number; quantity: number; timestamp: string; } type OrderDetails = Omit<Order, 'timestamp'>; // OrderDetails sarà { id: number; productId: number; quantity: number; } -
Exclude<Type, ExcludedUnion>: Crea un tipo escludendo da
Typequegli elementi che possono essere assegnati aExcludedUnion. Viene usato per unioni (union types).type Colors = 'red' | 'green' | 'blue' | 'yellow'; type PrimaryColors = Exclude<Colors, 'yellow'>; // PrimaryColors sarà 'red' | 'green' | 'blue' -
Extract<Type, Union>: Crea un tipo selezionando da
Typequegli elementi che possono essere assegnati aUnion. Viene usato per unioni.type AllAnimals = 'dog' | 'cat' | 'fish' | 'bird'; type PetAnimals = Extract<AllAnimals, 'dog' | 'cat'>; // PetAnimals sarà 'dog' | 'cat' -
NonNullable<Type>: Crea un tipo escludendo da
Typei valorinulleundefined.type MaybeString = string | null | undefined; type NotNullableString = NonNullable<MaybeString>; // NotNullableString sarà string -
Record<Keys, Type>: Crea un tipo di oggetto le cui proprietà hanno chiavi di
Keyse valori del tipoType.type CityPopulation = Record<string, number>; // CityPopulation sarà { [key: string]: number } const population: CityPopulation = { "Moscow": 12635466, "Saint Petersburg": 5381033, }; -
Parameters<Type>: Restituisce una tupla (tuple) dei tipi dei parametri della funzione
Type.function greet(name: string, age: number): string { return `Hello, ${name}! You are ${age}.`; } type GreetParams = Parameters<typeof greet>; // GreetParams sarà [name: string, age: number] -
ReturnType<Type>: Restituisce il tipo del valore di ritorno della funzione
Type.function calculateSum(a: number, b: number): number { return a + b; } type SumResult = ReturnType<typeof calculateSum>; // SumResult sarà number -
ConstructorParameters<Type>: Restituisce una tupla o array dei tipi dei parametri del costruttore della classe
Type.class MyClass { constructor(name: string, id: number) {} } type MyClassParams = ConstructorParameters<typeof MyClass>; // MyClassParams sarà [name: string, id: number] -
InstanceType<Type>: Restituisce il tipo dell'istanza della classe
Type.class AnotherClass { value: string; constructor(v: string) { this.value = v; } } type AnotherClassInstance = InstanceType<typeof AnotherClass>; // AnotherClassInstance sarà AnotherClass
L'uso dei tipi utilitari rende il codice più sicuro, manutenibile ed espressivo, consentendo di gestire efficacemente tipi di dati complessi.