带有属性的函数的 TypeScript 接口
Posted
技术标签:
【中文标题】带有属性的函数的 TypeScript 接口【英文标题】:TypeScript interface for function with properties 【发布时间】:2015-12-20 00:00:34 【问题描述】:我在 Angular.js 项目中使用 TypeScript 并使用 Jasmine 进行测试。
当我使用spyOn
模拟对象上的方法时,Jasmine 会将该方法替换为具有calls
属性的函数,以便您可以执行例如thing.method.calls.count()
。
问题是 TypeScript 编译器不知道方法上的 calls
属性并给出编译器错误:
property 'calls' does not exist on type '() => IPromise<IReport[]>'
如何解决此错误?我是否需要定义一个具有函数签名和对象属性的新接口?我尝试过使用不同的界面配置,但到目前为止没有运气。
【问题讨论】:
你是否从确定类型的 repo 中提取了 jasmine.d.ts? 是的,我引用了 jasmine.d.ts。 【参考方案1】:如何解决这个错误?
基本上在globals.d.ts
之类的文件中添加Function
接口。演示:
interface Function
calls: any;
var foo = ()=>null;
foo.calls; // okay
这里介绍了这个技巧:https://basarat.gitbooks.io/typescript/content/docs/types/lib.d.ts.html
【讨论】:
我注意到您没有记录如何在用户定义的 global.d.ts 文件中正确连接。能详细点吗?以上是关于带有属性的函数的 TypeScript 接口的主要内容,如果未能解决你的问题,请参考以下文章
从0开始的TypeScriptの九:接口Interfaces · 中