В TypeScript можно использовать keyof для доступа к вложенным свойствам типа.
Предположим у вас есть следующий тип данных:
type Person = { name: string; age: number; address: { street: string; city: string; }; };
Чтобы получить доступ к вложенным свойствам типа Person, вы можете использовать ключевое слово keyof и оператор доступа точка (.) с использованием выражения типа. Например:
type PersonKeys = keyof Person; // 'name' | 'age' | 'address' type AddressKeys = keyof Person['address']; // 'street' | 'city'
В первом случае мы получаем все ключи (свойства) типа Person: 'name', 'age' и 'address'.
Во втором случае мы получаем все ключи (свойства) вложенного типа Person['address']: 'street' и 'city'.
Теперь, используя keyof для доступа к вложенным свойствам типа, вы можете использовать их в других местах кода. Например, вы можете использовать их для создания обобщенных функций, которые обрабатывают свойства конкретного типа:
function getProperty<T, K extends keyof T>(obj: T, key: K): T[K] { return obj[key]; } const person: Person = { name: 'John', age: 25, address: { street: '123 Main St', city: 'New York', }, }; const name = getProperty(person, 'name'); // 'John' const street = getProperty(person.address, 'street'); // '123 Main St'
В этом примере мы создали обобщенную функцию getProperty, которая принимает объект и ключ (свойство), и возвращает значение свойства. Затем мы передали объект типа Person и строку 'name' в качестве аргументов и получили значение свойства 'name' объекта person. Мы также передали вложенный объект person.address и строку 'street' в качестве аргументов и получили значение свойства 'street' этого вложенного объекта.
Ключевое слово keyof дает вам возможность делать статические проверки типов на стадии компиляции, что позволяет избежать ошибок и создавать более безопасный и надежный код.