1

我尝试建立一个服务库。我通常使用服务文件中的接口。phpStorm 没有为此创建“导入”语句,它可以正常工作ng serve

public list$: Observable<Platform.PlatformInterface[]>;

private _platform: AngularFirestoreCollection<Platform.PlatformInterface>;

constructor(db: AngularFirestore) {
    this._platform = db.collection<Platform.PlatformInterface>('platforms');
    this.list$ = this._platform.valueChanges();
}

这里是接口:(我只将它简化为接口的根,因为它在这篇文章中更清晰。通常有更多接口)

declare module PlatformInterface {

    export interface Root {
        id: string;
        name: string;
        design: Design[];
        saga: Saga[];
    }

}

但是当我运行时,npm run packagr我得到了这个错误:

BUILD ERROR
src/app/services/platform.service.ts(12,30): error TS2503: Cannot find namespace 'Platform'.

有任何想法吗?我已经尝试在 public_api.ts 中导入接口,但这对我不起作用。

4

1 回答 1

0

终于过了这么久,我找到了适合我的解决方案。

在使用命名空间的 .ts 文件顶部使用三斜杠指令。例如,我的命名空间

declare module google {
    export module maps {
        ...
    }
    ...
}

../../typings.d.ts(相对于引用它的文件)中声明,所以我把

/// <reference path="../../typings.d.ts" />

在引用它的文件顶部,以便访问 google 命名空间。

这是 ng-packagr 创建者在他在 GitHub 问题中的评论提出的。

于 2018-05-21T18:34:17.977 回答