Получить объединение строк, динамически из массива - PullRequest
0 голосов
/ 26 мая 2018

У меня есть это:

const goodKeys = {
  'integer': 1,
  'string': 1,
  'number': 1,
  'function': 1,
  'boolean': 1,
  'null': 1,
  'undefined': 1,
  'symbol': 1
};

И я стремлюсь динамически извлекать / выводить из вышеизложенного следующее:

export type OptsKey =
  'integer' |
  'string' |
  'number' |
  'function' |
  'boolean' |
  'null' |
  'undefined' |
  'symbol';

Я пытался сделать это:

const keys = Object.keys(goodKeys);

export interface OptsKeys {
  [key: string]: typeof keys
}

но это не сработает, и даже если это сработает, маловероятно, что оно разрешит объединение строк, а не просто массив.

Есть ли способ сделать это?

1 Ответ

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

Как я понимаю, вы пытаетесь проверить, какой из ключей объекта имеет 1 в качестве значения, верно?

const goodKeys = {
  'integer': 1,
  'string': 0,
  'number': 1,
  'function': 0,
  'boolean': 1,
  'null': 0,
  'undefined': 1,
  'symbol': 1
};

const transform = myObject => {
    const result = [];
    for(const key in myObject) {
       if(myObject[key]) result.push(key);
    }
    return result;
}

const myArray = transform(goodKeys);
console.log(myArray)
// [ 'integer', 'number', 'boolean', 'undefined', 'symbol' ]
...