TS2345:类型X的参数不能分配给Y类型的参数

时间:2017-08-31 20:07:50

标签: node.js typescript typescript2.3

TypeScript的奇怪错误:

enter image description here

如图所示,错误为:

  

TS2345:“ErrnoException”类型的参数不可分配给   '(err:ErrnoException)=>类型的参数无效”。类型   'ErrnoException'不提供签名'(错误:   ErrnoException):void'。

以下是导致错误的代码:

export const bump = function(cb: ErrnoException){
  const {pkg, pkgPath} = syncSetup();
  fs.writeFile(pkgPath, JSON.stringify(pkg, null, 2), cb);
};

有人知道这里发生了什么吗?

1 个答案:

答案 0 :(得分:2)

您正在发送类型为 ErrnoException 的值,而您调用的函数需要一个函数,该函数采用* ErrnoException类型的参数**并返回void。

您发送:

let x = new ErrnoException;

虽然您调用的函数需要

let cb = function(e: ErrnoException) {};

您可以更改功能以接收正确的参数。

export const bump = function(cb: (err: ErrnoException) => void){
  const {pkg, pkgPath} = syncSetup();
  fs.writeFile(pkgPath, JSON.stringify(pkg, null, 2), cb);
};