← Alle AufgabenTypeScript · Junior
keyof: pluck
pluck(items, key) liefert ein Array der Werte eines Felds: pluck(users, "name") ergibt ["Ann", "Bob"].
Typisiere es so, dass key nur ein echtes Feld der Objekte sein kann (ein Tippfehler ist ein Kompilierfehler) und das Ergebnis den Typ dieses Felds hat: string[] für name, number[] für id.
Strg+Enter führt die Tests aus. Tab rückt ein; um den Editor per Tastatur zu verlassen, drücke Esc und dann Tab. Der Code wird in diesem Browser gespeichert.
Tests (6)
Typtests prüft der TypeScript-Compiler im strict-Modus. Expect<Equal<A, B>> besteht, wenn die Typen exakt gleich sind, und // @ts-expect-error, wenn die nächste Zeile nicht kompiliert. Der erste Start lädt den Compiler und dauert daher ein paar Sekunden.
- Typen
const users = [{ id: 1, name: 'Ann' }, { id: 2, name: 'Bob' }]; const names = pluck(users, 'name'); type _ = Expect<Equal<typeof names, string[]>>;
- Typen
const users = [{ id: 1, name: 'Ann' }]; const ids = pluck(users, 'id'); type _ = Expect<Equal<typeof ids, number[]>>;
- Typen
// @ts-expect-error - users have no email pluck([{ id: 1, name: 'Ann' }], 'email');
const users = [{ id: 1, name: 'Ann' }, { id: 2, name: 'Bob' }]; expect(pluck(users, 'name')).toEqual(['Ann', 'Bob']);
expect(pluck([{ id: 1 }, { id: 2 }], 'id')).toEqual([1, 2]);
expect(pluck([], 'id')).toEqual([]);