具有属性

时间:2015-09-22 20:42:11

标签: angularjs typescript jasmine

我在Angular.js项目中使用TypeScript并使用Jasmine进行测试。

当我使用spyOn在对象上模拟方法时,Jasmine用一个具有calls属性的函数替换该方法,这样就可以做到thing.method.calls.count()

问题是TypeScript编译器不知道方法上的calls属性并给出编译器错误:

property 'calls' does not exist on type '() => IPromise<IReport[]>'

如何修复此错误?我是否需要定义具有函数签名和对象属性的新接口?我尝试使用不同的界面配置进行修改,但到目前为止没有运气。

1 个答案:

答案 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