Как установить поле для совпадения значений массива в потоке js? - PullRequest
0 голосов
/ 02 марта 2020

Учитывая некоторый замороженный объект массива, предназначенный для представления возможных значений для поля формы.

const FROZEN_LIST = Object.freeze(['Value1', 'Value2', 'Value3'])

Как настроить определение объекта формы, чтобы ТОЛЬКО принимать возможные значения, определенные в этом массиве для этого ключа поля в Поток. js?

// @flow
import {FROZEN_LIST} from (...)

type FormData = {
  fieldKey: Array<string>, // this is not desirable because I want it to be more specific.
  fieldKey: typeof FROZEN_LIST // is this how its done?
}

1 Ответ

0 голосов
/ 04 марта 2020

В подобных ситуациях вы можете использовать оператор $ Keys. $ Ключи

В вашей ситуации:

// @flow
import {FROZEN_LIST} from (...)

type FormData = {
  fieldKey: $Keys<typeof FROZEN_LIST.reduce((r,i)=>({...r,...{[i]:i}}), {})>
}

Дайте мне знать, если это сработало.

Было бы лучше, если бы вы могли изменить оригинал FROEZEN_LIST:

const FROZEN_LIST = Object.freeze({'Value1':'Value1', 'Value2',:'Value2', 'Value3':'Value3'})
// @flow
import {FROZEN_LIST} from (...)

type FormData = {
  fieldKey: $Keys<typeof FROZEN_LIST>
}

Вы также можете следовать этой инструкции: Объединение из литерала массива

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