angularjs - 具有属性的函数的 TypeScript 接口(interface)

标签 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[]>'

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

最佳答案

How do I fix this error?

基本上在globals.d.ts这样的文件中添加到Function接口(interface)。演示:

interface Function {
    calls: any;
}

var foo = ()=>null;
foo.calls; // okay 

这里介绍了这个技巧:https://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html

关于angularjs - 具有属性的函数的 TypeScript 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32726515/

相关文章:

javascript - 具有大数据库的 AngularJS 搜索

javascript - 输入类型文件更改时如何传递 Angular 值

javascript - Kendo 自动完成与 Angular 中的服务器过滤,如何操作?

javascript - Angular Service 在成功 ajax 后失去值(value)

java - 我如何在 angular2 post 请求中发送 2 个对象

javascript - 条件或针对许多字符串的更短语法

typescript |不可变 |扩展 Immutable.Map 类型的正确方法

angular - 有没有办法在 Angular 中测试 Observable 订阅?

javascript - 文档元素的模拟对象

javascript - 使用 DOM 的 Angular Controller 中的测试函数