TypeScript proporciona una serie de tipos de utilidades que se utilizan para resolver un problema particular que crea el uso de tipos en Javascript. Un tipo de utilidad muy útil que se usa en TypeScript es el tipo Omit, que nos permite personalizar un tipo ya existente. Veamos cómo funciona.
Este artículo asume que sabe cómo crear tipos personalizados en TypeScript. Si no lo hace, lea mi artículo sobre tipos personalizados aquí.
En TypeScript, a menudo creamos tipos personalizados que nos permiten garantizar que los datos se ajusten a un formato específico.
Por ejemplo, si quisiéramos crear un tipo de usuario personalizado que tenga cuatro campos: firstName
, lastName
, age
y lastActive
, podríamos hacer algo como esto:
type User = { firstName: string; lastName: string; age: number; lastActive: number; }
Lamentablemente, la codificación no siempre es sencilla. A veces, queremos usar nuestro tipo nuevamente, pero eliminar ciertos elementos de él, creando así un nuevo tipo. Para hacer esto, podemos usar Omit<Type, Omissions>
. Omitir acepta dos valores:
El tipo en el que basar nuestro nuevo tipo
Un tipo de unión que enumera todos los campos para eliminar.
Por ejemplo, si queremos tomar nuestro tipo de usuario y eliminar la edad y el último activo, podríamos hacer lo siguiente:
type User = { firstName: string; lastName: string; age: number; lastActive: number; } type UserNameOnly = Omit<User, "age" | "lastActive">
Ahora, tenemos dos tipos: User
, que es nuestro tipo de usuario principal, y UserNameOnly
, que es nuestro tipo de usuario menos age
y lastActive
. Del mismo modo, si solo quisiéramos eliminar la age
, esto sería suficiente:
type UserNameAndActive = Omit<User, "age">
Ahora, podemos usar nuestros nuevos tipos en cualquier parte de nuestro código. Esto nos da la flexibilidad de usar un tipo y transformarlo para circunstancias específicas. Aquí hay un ejemplo que usa nuestros dos nuevos tipos:
type User = { firstName: string; lastName: string; age: number; lastActive: number; } type UserNameOnly = Omit<User, "age" | "lastActive"> type UserNameAndActive = Omit<User, "age"> const userByName:UserNameOnly = { firstName: "John", lastName: "Doe", }; const userWithoutAge:UserNameAndActive = { firstName: "John", lastName: "Doe", lastActive: -16302124725 }
También publicado aquí