Sobes.tech

Frontend

/* Scrieți tipul MyReadonly - face ca toate câmpurile să fie doar pentru citire */ type User = { id: number name: string } type MyReadonly<T> = any const user: MyReadonly<User> = { id: 1, name: "John" } user.name = "Jane" /* Scrieți tipul MyRequired — face ca toate câmpurile opționale să fie obligatorii */ type User = { id?: number name?: string } type MyRequired<T> = { } /* Scrieți tipul MyPartial — face ca toate câmpurile opționale să fie obligatorii */ type User = { id: number name: string } type MyPartial<T> = { } const user1: MyRequired<User> = { id: 1, name: "John" } const user2: MyRequired<User> = { id: 1 }

180

/** * Scrieți tipizarea pentru funcția getObjField * * @param obj - Obiectul din care se extrage valoarea * @param key - Cheia valorii de extras * @returns Valoarea corespunzătoare cheii în obiect */ 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"); // Eroare: Argumentul de tip '"test"' nu poate fi atribuit parametrului de tip 'keyof Obj'.

176

tip Obiect = { nume: string varsta: number } const getObjField = (obj: any, key: any) => { return obj[key] } const user: Obiect = { nume: "Nik", varsta: 25 } const value1 = getObjField(user, "nume") const value2 = getObjField(user, "varsta") const value3 = getObjField(user, "test") const getObjField = <T, K extends keyof T>(obj: T, key: K) => { return obj[key] }

170

Cine s-a ocupat de configurarea mediului de dezvoltare, a linters-urilor, a formatter-elor (Husky, hooks pre-commit)?

169

// Ce va fi afișat în consolă const a = {}; const fn = (b) => { b.some = "1"; }; fn(a); console.log(a.some); // ?

165
/4