typescript - 对“对象”类型感到困惑?
问题描述
我正在尝试为函数参数提出一个类型签名,该函数参数本身是一个具有 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 '{}'.
我究竟做错了什么?
谢谢!
解决方案
bbb
期望可以使用任何对象作为参数调用的函数。
你aaa
作为论据传递。但aaa
只能用具有n
number 类型属性的对象调用。不能用任何类型的对象调用它。所以这不是一个有效的论据bbb
。
打个比方,bbb
就像一个果汁吧,它需要一个果汁机才能工作,即可以将任何水果转化为果汁的功能。
如果您尝试使用苹果榨汁机(即只能用苹果榨汁的功能)创建果汁吧,那将无法正常工作。
推荐阅读
- boolean-logic - 我如何简化 f = x'yz + xy'z + xyz'?
- microsoft-graph-api - 使用 microsoft-graph 安排会议时的时区问题
- r - 创建自定义类的对象并为其分配方法
- flutter - Flutter 选项卡失去焦点或没有响应点击
- selenium-extent-report - 可以生成的范围报告的大小是否有任何限制?
- swift - 如何使用 uiprefetching 委托使用 AlamofireImage 预取图像?
- sql-server - 在 TO_DATE 函数中使用变量
- javascript - 等待地图函数中的所有承诺
- tfs - 如何在 Azure DevOps 中添加和签入代码?
- websphere - WebSphere Portal 主题:访问页面元数据