Как получить список полей из интерфейса?

Для получения списка полей из интерфейса в TypeScript можно использовать технику называемую "интроспекция". В TypeScript типы интерфейсов не сохраняются во время выполнения программы, поэтому, чтобы получить информацию о полях, мы можем использовать рефлексию или использовать интроспекцию на этапе компиляции.

1. Интроспекция на этапе компиляции с использованием keyof:
Используя ключевое слово keyof и оператор индексации мы можем получить список полей интерфейса. Рассмотрим пример:

interface Person {
  name: string;
  age: number;
  address: string;
}

type PersonFields = keyof Person; // 'name' | 'age' | 'address'

2. Интроспекция на этапе выполнения с использованием рефлексии:
Для получения списка полей интерфейса во время выполнения можно использовать рефлексию. Рефлексия позволяет получить доступ к метаданным объектов и типам во время выполнения программы. Рассмотрим пример:

interface Person {
  name: string;
  age: number;
  address: string;
}

const person: Person = {
  name: 'John',
  age: 25,
  address: '123 Main St',
};

const fields = Object.keys(person); // [ 'name', 'age', 'address' ]

В этом примере мы используем функцию Object.keys для получения массива полей из объекта person. Мы можем применить этот подход к интерфейсам, так как TypeScript интерфейсы компилируются в JavaScript-объекты.

Вышеуказанные способы позволяют получить список полей из интерфейса в TypeScript. Оба способа могут быть полезны в различных сценариях, в зависимости от ваших требований и условий использования.