为什么打字稿没有“功能”类型?

时间:2020-05-04 08:49:42

标签: javascript typescript object types

我是打字稿初学者,我很想知道为什么我不能这样做:

const obj: {
  property1: string
  property2: boolean
  property3: function
}

我认为唯一的选择是这样做:

const obj: {
  property1: string
  property2: boolean
  property3: any
}

为什么必须在对象声明中立即在 property3 上实现功能

2 个答案:

答案 0 :(得分:6)

Typescript确实具有Function类型,这意味着一个带有参数any并返回结果any的函数,尽管我强烈建议您不要使用它。

相反,您应该使用function signature来允许您明确指定参数类型和返回类型:

let obj: {
  property1: string
  property2: boolean
  property3: (a: string, b: boolean) => number
}

Playground Link

答案 1 :(得分:0)

该属性必须实现,因为它是obj类型的一部分

如果您不想在声明时初始化属性,则必须将其设为可选。

例如:

const obj: {
  property1: string
  property2: boolean
  property3?: any
}

现在您可以这样做:

obj = { property1: 'A string'. property2: true };