簡體   English   中英

打字稿導入錯誤的角度

[英]typescript importing wrong angular

我正在使用以下語法在我的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'。

即使當我嘗試從vscode導航到'angular' ,我vscode導航到角度模擬角度定義。 它應該導航到有角度的而不是模擬庫...

如何避免這個問題?

編輯

下面是執行

我擁有的實現是自定義服務,關於在編譯過程中哪個打字稿給出了錯誤(錯誤粘貼在上面)

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

angular.service('logger', Logger)

嘗試這個..

import * as _angular_ from 'angular';

declare global {
const angular: typeof _angular_;
}

希望對您有幫助

這是因為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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM