使用来自类型的 'in' 计算 属性 类型

Type with computed property using 'in' from type

我使用 typeofkeyof 从对象 Options 生成类型 Option

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

使用 Option

我收到一个错误:

Property 'options2' is missing in type '{ [Options.option1]: 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

感谢@TitianCernicova-Dragomir,我只需要将道具设置为可选 (?),如下所示:

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