Доки по разработке
This project is maintained by teniryte
keyofПринципы
keyof T создаёт объединение строковых (или символных) ключей типа T.K extends keyof T ограничивает параметр только существующими ключами — защищает от опечаток.obj[key] возвращает значение соответствующего типа (T[K]).Пример
export class User {
constructor(public name: string, public age: number) {}
}
function getValue<T, K extends keyof T>(obj: T, key: K) {
return obj[key];
}
const user: User = { name: 'John', age: 30 };
console.log(getValue(user, 'name')); // "John"
// getValue(user, 'gender'); // Ошибка: ключ не входит в keyof
Практика
keyof для построения утилит валидации и сериализации (type Keys = keyof Person;).typeof для получения ключей из объекта конфигурации (type Routes = keyof typeof routes;).keyof к union-типам, чтобы получать общие ключи всех вариантов.