ng-packagr: не удается найти интерфейс пространства имен - PullRequest
0 голосов
/ 29 апреля 2018

Я пытаюсь создать сервисную библиотеку. Обычно я использую интерфейс в служебном файле. phpStorm не создал для этого оператора import, и он отлично работает с 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, но у меня это не сработало.

1 Ответ

0 голосов
/ 21 мая 2018

НАКОНЕЦ через столько времени я нашел решение, которое работает для меня.

Используйте директиву triple-slash в верхней части ваших файлов .ts, которые используют пространство имен. Например, мое пространство имен

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

объявлен в ../../typings.d.ts (относительно файла, на который он ссылается), поэтому я поставил

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

вверху файла, ссылающегося на него, для доступа к пространству имен Google.

Это было предложено создателем ng-packagr в его комментарии здесь в выпуске GitHub.

...