打字稿导入错误的角度

哈里舍尔

我正在使用以下语法在我的angular 1应用程序(在打字稿中)中导入angular

   import * as angular from 'angular';

这从我angular-mocks而不是从angular我的ILogService实现失败的角度导入

./app/shared/Logger.factory.ts中的错误(38,7):错误TS2420:类'Logger'错误地实现了接口'ILogService'。属性“调试”的类型不兼容。类型'(... argument:any [])=>无效'不能分配给类型'ILogCall'。

甚至当我尝试导航到'angular'vscode我得到导航到角嘲笑的角度定义。它应该导航到有角度的而不是模拟库...

如何避免这个问题?

编辑

下面是执行

我拥有的实现是自定义服务,关于在编译过程中哪个打字稿给出了错误(错误已粘贴到上面)

class Logger implements ng.ILogService {
     info(message:string) { //some custom logic in info method}
}

angular.service('logger', Logger)

这是因为angular-mock的键入是对angular的增强。换句话说,真正的ILogCall接口应该是:

interface ILogCall {
    (...args: any[]): void;   //from @types\angular\index.d.ts
    logs: string[];    //from @types\angular-mocks\index.d.ts
}

因此,在您的代码中:

info(message:string) { //some custom logic in info method}

您需要返回一个正确的ILogCall对象(包含所有成员)。@TheChetan和@Natarajan Nagarajugari的答案可能会有所帮助,但是我不确定它是否会破坏您的TypeScript编写单元测试。

我的解决方案是在info(message:string)中:

info(message:string)
{
    var logCall: any = (...args: any[]) => {};
    logCall.logs = //something;

    return logCall as ng.ILogCall;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章