[英]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.