ng-packagr:找不到命名空间接口

时间:2018-04-29 11:41:02

标签: javascript angular typescript shared-libraries ng-packagr

我尝试构建服务库。我通常在服务文件中使用Interface。 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();
}

这里的接口:(我只将它减少到接口的根,因为它在这篇文章中更清楚.Nomamaly有更多的接口)

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中导入接口,但这对我没用。

1 个答案:

答案 0 :(得分:0)

最后经过这么长时间我找到了一个适合我的解决方案。

使用使用命名空间的.ts文件顶部的triple-slash directive。例如,我的命名空间

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

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

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

位于引用它的文件的顶部,以便访问google名称空间。

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