我在Angular.js项目中使用TypeScript并使用Jasmine进行测试。
当我使用spyOn
在对象上模拟方法时,Jasmine用一个具有calls
属性的函数替换该方法,这样就可以做到thing.method.calls.count()
。
问题是TypeScript编译器不知道方法上的calls
属性并给出编译器错误:
property 'calls' does not exist on type '() => IPromise<IReport[]>'
如何修复此错误?我是否需要定义具有函数签名和对象属性的新接口?我尝试使用不同的界面配置进行修改,但到目前为止没有运气。
答案 0 :(得分:1)
如何解决此错误?
基本上添加到Function
等文件中的globals.d.ts
界面。演示:
interface Function {
calls: any;
}
var foo = ()=>null;
foo.calls; // okay
这里介绍了这个技巧:https://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html