我从TypeScript得到了这个奇怪的错误:
“只能使用'new'关键字调用void函数。”
什么吗
构造函数,看起来像:
//example.h
#include "header1.h"
extern int randomNum;
extern Type foo(int);
我不知道问题是什么。我尝试添加和删除返回类型(void),但没有做任何事情。
答案 0 :(得分:4)
正如肖恩所指出的,这是论证中类型不匹配的一个不那么明显的结果。
如果更深层次的原因让您感兴趣:当函数的参数不进行类型检查时,tsc
会将返回类型推断为特殊类型never
(覆盖您指定的void
)。具有此类功能的new
将导致TS2350 Only a void function can...
。
此代码段可以在没有错误参数的情况下触发TS2350。
function Ctor(): never {
throw "never return";
}
const v = new Ctor();
答案 1 :(得分:3)
问题是,ISumanInputs
不包含您在电话或中包含的一项或多项属性,但您未正确履行IsumanInputs
接口
在额外的属性情况下,您应该收到一个“额外”错误:
对象文字只能指定已知属性,'anExtraProp'在'ISumanInputs'类型中不存在
在遗失的属性案例中,您将收到不同的“额外”错误:
类型'{fileName:string;}中缺少属性'timestamp'; networkLog:string; outputPath:string; }”。
有趣的是,如果您将参数的定义移到行外,额外属性的情况不再失败:
const data = {
fileName: "abc",
networkLog: "",
outputPath: "",
timestamp: "",
anExtraProperty: true
};
new Suman(data);