Sobes.tech

Frontend

/* Escriba el tipo MyReadonly: hace que todos los campos sean de solo lectura */ type User = { id: number name: string } type MyReadonly<T> = any const user: MyReadonly<User> = { id: 1, name: "John" } user.name = "Jane" /* Escriba el tipo MyRequired: hace que todos los campos opcionales sean obligatorios */ type User = { id?: number name?: string } type MyRequired<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 } /* Escriba el tipo MyPartial: hace que todos los campos opcionales sean obligatorios */ type User = { id: number name: string } type MyPartial<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 }

184

/** * Escribe la tipificación para la función getObjField * * @param obj - El objeto del cual obtener el valor * @param key - La clave del valor a obtener * @returns El valor correspondiente a la clave en el objeto */ type Obj = { name: string; age: number; }; const getObjField = <K extends keyof Obj>(obj: Obj, key: K): Obj[K] => { return obj[key]; }; const user: Obj = { name: "Nik", age: 25 }; const value1 = getObjField(user, "name"); const value2 = getObjField(user, "age"); const value3 = getObjField(user, "test"); // Error: Argument of type '"test"' is not assignable to parameter of type 'keyof Obj'.

178

¿Quién se encargó de configurar el entorno de desarrollo, los linters, los formateadores (Husky, hooks de pre-commit)?

175

// ¿Qué se mostrará en la consola const a = {}; const fn = (b) => { b.some = "1"; }; fn(a); console.log(a.some); // ?

171

type Obj = { name: string age: number } const getObjField = (obj: any, key: any) => { return obj[key] } const user: Obj = { name: "Nik", age: 25 } const value1 = getObjField(user, "name") const value2 = getObjField(user, "age") const value3 = getObjField(user, "test") const getObjField = <T, K extends keyof T>(obj: T, key: K) => { return obj[key] }

170
/4