Как преобразовать ключи объекта типа в массив типа строки в машинописи - PullRequest
1 голос
/ 01 мая 2020

с учетом следующего ввода в машинописи:

type InputObjectType = {
  a: string
  b: number
  c: {}
}

как я могу получить следующий тип:

type ObjectKeysArrayType = ['a', 'b', 'c']

, пока я могу получить только до:

type AllPossibleKeys = (keyof InputObjectType)[]

, который дает мне ["a" | "b" | "c"], что близко, но не то, что я ищу в этом случае.

Мне нужен массив, который всегда содержит все строки ключей в данном объекте типа. Единственный известный мне способ обеспечить это, например, когда пользователь добавляет новый ключ к объекту, который также добавляется в массив, - это что-то вроде этого.

Ответы [ 2 ]

0 голосов
/ 01 мая 2020

В настоящее время это невозможно, поскольку информация о типе недоступна во время выполнения. Вы можете попробовать свой код на Typescript Playground . Когда вы сделаете это, вы обнаружите, что этот код:

type InputObjectType = {
  a: string
  b: number
  c: {}
}

переносится в ничто. Его просто не существует после переноса кода в javascript. Поскольку он не существует во время выполнения, никакие действия во время выполнения невозможны, например, перебирать его свойства или даже распечатывать их.

0 голосов
/ 01 мая 2020

попробуйте

const object1 = {
  a: 'somestring',
  b: 42,
  c: false
};

console.log(Object.keys(object1));

output: Array ["a", "b", "c"]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...