使用类型中的“in”键入带有计算属性

时间:2018-04-30 06:26:59

标签: typescript types computed-properties

我使用OptionOptions从对象typeof生成类型keyof

我定义了另一种类型 - Dropdown,它具有计算属性并使用Option使用in

我收到错误:

  

类型'{[Options.option1]中缺少属性'options2':string; }”。

我该如何正确实施?

const Options = {
  option1: 'option1' as 'options1',
  option2: 'option1' as 'options2',
  option3: 'option1' as 'options3',
}

type Option = typeof Options[keyof typeof Options];
type Dropdown = { [key in Option]: string };

const obj: Dropdown = {
  [Options.option1]: 'test'
}

playground

1 个答案:

答案 0 :(得分:0)

由于@ TitianCernicova-Dragomir,我只需要将prop设置为可选(?),如下所示:

const Options = {
  option1: 'option1' as 'options1',
  option2: 'option1' as 'options2',
  option3: 'option1' as 'options3',
}

type Option = typeof Options[keyof typeof Options];
type Dropdown = { [key in Option]?: string };

const obj: Dropdown = {
  [Options.option1]: 'test'
}

Playground