方法上的映射类型

时间:2018-05-15 15:33:52

标签: javascript typescript typescript-typings

我正在尝试创建一个定义其他类型值的对象类型。

我特意有这个:

LocalDate

我现在想要将其更改为包含其他类型的项目列表。我尝试了以下但是我收到了一个错误:

  

索引签名参数类型不能是联合类型。请考虑使用映射对象类型。

export interface Obj {
  [key: string]: any
}

因此,我尝试了这个错误:

type ListOfMethods = {
  one(): void
  two(): void
}

export interface Obj {
  [key: keyof ListOfMethods]: any
}

现在出现此错误

  

计算属性名称必须是'string','number','symbol'或'any'类型。

1 个答案:

答案 0 :(得分:2)

您必须将Obj定义为:

export type Obj = {
  [key in keyof ListOfMethods]: any
}

如果您使用:,则表示密钥类型,密钥类型只能是numberstring

keyof创建一个string的子类型,只允许其中的值为参数对象的属性。在这种情况下,keyof ListOfMethods'one' | 'two'