Háblame sobre los tipos utilitarios en TypeScript.
sobes.tech AI
Respuesta de la IA
Los tipos utilitarios en TypeScript son tipos incorporados que permiten transformar tipos de datos existentes en nuevos tipos, realizando diversas operaciones útiles. Ayudan a aumentar la flexibilidad y reutilización de tipos, reduciendo la redundancia del código.
Tipos utilitarios principales:
-
Partial<Type>: Crea un nuevo tipo en el que todas las propiedades de
Typeson opcionales.interface User { id: number; name: string; age: number; } type PartialUser = Partial<User>; // PartialUser será { id?: number; name?: string; age?: number; } -
Readonly<Type>: Crea un nuevo tipo en el que todas las propiedades de
Typeson de solo lectura.interface Point { x: number; y: number; } type ReadonlyPoint = Readonly<Point>; // ReadonlyPoint será { readonly x: number; readonly y: number; } -
Pick<Type, Keys>: Crea un tipo seleccionando un conjunto específico de propiedades
KeysdeType.interface Product { id: number; name: string; price: number; description: string; } type ProductSummary = Pick<Product, 'id' | 'name' | 'price'>; // ProductSummary será { id: number; name: string; price: number; } -
Omit<Type, Keys>: Crea un tipo excluyendo un conjunto específico de propiedades
KeysdeType.interface Order { id: number; productId: number; quantity: number; timestamp: string; } type OrderDetails = Omit<Order, 'timestamp'>; // OrderDetails será { id: number; productId: number; quantity: number; } -
Exclude<Type, ExcludedUnion>: Crea un tipo excluyendo de
Typeaquellos elementos que pueden ser asignados aExcludedUnion. Se usa para uniones (union types).type Colors = 'red' | 'green' | 'blue' | 'yellow'; type PrimaryColors = Exclude<Colors, 'yellow'>; // PrimaryColors será 'red' | 'green' | 'blue' -
Extract<Type, Union>: Crea un tipo seleccionando de
Typeaquellos elementos que pueden ser asignados aUnion. Se usa para uniones.type AllAnimals = 'dog' | 'cat' | 'fish' | 'bird'; type PetAnimals = Extract<AllAnimals, 'dog' | 'cat'>; // PetAnimals será 'dog' | 'cat' -
NonNullable<Type>: Crea un tipo excluyendo de
Typelos valoresnullyundefined.type MaybeString = string | null | undefined; type NotNullableString = NonNullable<MaybeString>; // NotNullableString será string -
Record<Keys, Type>: Crea un tipo de objeto cuyas propiedades tienen claves de
Keysy valores del tipoType.type CityPopulation = Record<string, number>; // CityPopulation será { [key: string]: number } const population: CityPopulation = { "Moscow": 12635466, "Saint Petersburg": 5381033, }; -
Parameters<Type>: Devuelve una tupla (tuple) de los tipos de los parámetros de la función
Type.function greet(name: string, age: number): string { return `Hello, ${name}! You are ${age}.`; } type GreetParams = Parameters<typeof greet>; // GreetParams será [name: string, age: number] -
ReturnType<Type>: Devuelve el tipo del valor de retorno de la función
Type.function calculateSum(a: number, b: number): number { return a + b; } type SumResult = ReturnType<typeof calculateSum>; // SumResult será number -
ConstructorParameters<Type>: Devuelve una tupla o matriz de los tipos de los parámetros del constructor de la clase
Type.class MyClass { constructor(name: string, id: number) {} } type MyClassParams = ConstructorParameters<typeof MyClass>; // MyClassParams será [name: string, id: number] -
InstanceType<Type>: Devuelve el tipo de la instancia de la clase
Type.class AnotherClass { value: string; constructor(v: string) { this.value = v; } } type AnotherClassInstance = InstanceType<typeof AnotherClass>; // AnotherClassInstance será AnotherClass
El uso de tipos utilitarios hace que el código sea más seguro, mantenible y expresivo, permitiendo gestionar eficazmente tipos de datos complejos.