首页 > 解决方案 > 对“对象”类型感到困惑?

问题描述

我正在尝试为函数参数提出一个类型签名,该函数参数本身是一个具有 any object类型的单个参数的函数。像这样(打字稿游乐场):

在此处输入图像描述

但是在严格的编译器模式下,我收到了这个错误:

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 '{}'.

我究竟做错了什么?

谢谢!

标签: typescripttypescript-typings

解决方案


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

aaa作为论据传递。但aaa只能用具有nnumber 类型属性的对象调用。不能用任何类型的对象调用它。所以这不是一个有效的论据bbb

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

如果您尝试使用苹果榨汁机(即只能用苹果榨汁的功能)创建果汁吧,那将无法正常工作。


推荐阅读