Ahora combinemos estos dos, map types y conditional types, y creemos un tipo utilitario personalizado. Así que el tipo utilitario que quieres crear es similar a omit, pero un poco diferente. Así que omit toma la clave de, así que esto es lo que hace omit. Tipo omit keys, omit person, coma, así que tomará todas las claves de person, digamos h, y omitirá todas estas cosas y solo devolverá lo que quede, lo que sea que queden las claves. Ahora lo que quieres es, en lugar de dar el person, en lugar de dar las claves como segundo argumento, queremos dar los tipos que queremos eliminar. Así que no queremos dar el nombre exacto de la clave, pero queremos dar el tipo de la clave que quieres eliminar. Así que queremos eliminar aquí, Boolean y numbers, no queremos esto, y no queremos esto, solo queremos name y email. Así que una vez que demos eso debería devolver solo las variables de tipo string. Entonces, ¿cómo hacemos eso? Solo claves de tipo string, entonces, ¿cómo hacemos eso? Así que solo usamos la misma firma que tenemos para omit, así que omit toma el objeto principal como base, y también tomamos todos los tipos de unión. Y usamos el mismo omit pero con un tipo diferente, así que básicamente omit espera claves como segundo argumento, ¿verdad?, eso es lo que espera, claves como segundo argumento. Pero estamos enviando number, y estamos enviando ese tipo real como segundo argumento. Así que queremos convertir este a number, queremos convertir el tipo a las claves reales. Así que eso es lo que se está haciendo aquí. Así que estamos usando el map type para recorrer el objeto base y obtener todas las claves, y lo que estoy verificando es el tipo. Así que este objeto principal de clave devolverá name o number basado en lo que sea la clave, si es name, entonces es string. Así que será string extiende el tipo a eliminar es number o Boolean, digamos string extiende Boolean, no es correcto, así que no extiende Boolean. Entonces devolvemos la clave en sí, así que devolvemos name. Así que para name, es un string, si extiende, devolvemos eso, así que en este ejemplo, digamos que esto es un string extiende Boolean, no extiende Boolean, así que será never, así que eso es lo que está aquí, y el siguiente es age. Así que age, un tipo de age es number, así que esto es number extiende number o Boolean, sí extiende, entonces devolverá el number, la clave en sí, así que será age. Así que estoy devolviendo la clave, no estoy devolviendo el tipo, solo estoy devolviendo la clave directamente. Nuevamente, email, el tipo de email es string, será never, luego is student, así que este, el tipo de is student es parte de Boolean o number, sí, entonces devolverá el tipo, básicamente is student, devolverá la clave, básicamente is student, así que esto es lo que devuelve después de que esto se ejecute. Nuevamente, ahora queremos, no queremos este objeto. Lo que queremos es que pasen name y age, ¿verdad? Entonces, ¿cómo pasamos eso? Con este, así que si recuerdas este ejemplo que vimos, esta person puede tomar, este tipo, puede tomar claves de person, básicamente unión de todas las claves, ¿verdad? Así que devolverá todo el tipo de esos. Así que si paso, digamos que esto es Boolean, ¿verdad? También devolverá name, number y Boolean. ¿Cuáles son todos los tipos de estas claves que se escribirán? Así que en nuestro ejemplo, es un poco diferente. Devolverá lo mismo, pero ¿qué tipo tenemos? Tenemos todos los tipos literales, tenemos never, tenemos age como tipo literal, y never. Y nuevamente, student es un tipo literal. Así que eso es lo que se está escribiendo.
Comments