对“对象”类型感到困惑?

时间:2018-11-23 22:40:49

标签: typescript typescript-typings

我正在尝试为函数参数提供类型签名,该函数参数本身就是具有任何 object 类型的单个参数的函数。像这样(typescript playground):

enter image description here

但是在严格的编译器模式下,我会收到此错误:

Argument of type '(a: { n: number; }) => void' is not assignable to parameter of type '(a: object) => void'.
  Types of parameters 'a' and 'a' are incompatible.
    Type 'object' is not assignable to type '{ n: number; }'.
      Property 'n' is missing in type '{}'.

我在做什么错了?

谢谢!

1 个答案:

答案 0 :(得分:2)

sdkmanager期望可以使用任何对象作为参数调用的函数。

您正在传递bbb作为参数。但是aaa仅可用于具有类型为aaa的属性的对象。不能用任何类型的对象调用它。因此,它对于n来说不是有效的参数。

打个比方,bbb就像一个果汁吧,它需要一个榨汁机才能工作,即一个可以提取任何水果并将其转化为果汁的功能。

如果您尝试使用苹果榨汁机创建果汁吧(即只能从苹果中榨汁的功能),