Как создать интерфейс на основе свойств объекта? - PullRequest
0 голосов
/ 07 мая 2018

Я использую последние TypeScript и Angular, и у меня есть объект:

const obj: ObjInterface = {
 prop1: 1,
 prop2: 2,
 prop3: '3'
}

Также у меня есть интерфейс на основе этого объекта:

interface ObjInterface {
  prop1: number;
  prop2: number;
  prop3: string;
}

Можно ли создать интерфейс массива, состоящий только из свойств obj?

const array: SomeInterface = ['prop1', 'prop2', 'prop3']; // OK
const array: SomeInterface = ['prop1', 'prop2', 'prop4']; // error

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете создать массив ключей типа, используя оператор keyof

interface ObjInterface {
    prop1: number;
    prop2: number;
    prop3: string;
}
const array: Array<keyof ObjInterface> = ['prop1', 'prop2', 'prop3']; // OK
const array2: Array<keyof ObjInterface> = ['prop1', 'prop2', 'prop4']; // error

Примечание Это будет ошибка во время компиляции, во время выполнения вы можете иметь разные строки в массиве, если вы выходите за пределы системы типов или используете утверждения типа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...