Модуль, содержащий абстрактный класс, не перекомпилируется в Angular-проекте - PullRequest
0 голосов
/ 21 октября 2019

Я занимаюсь разработкой проекта Angular 7, созданного с использованием angular-cli 7.2 и vscode 1.39.

При запуске с помощью ng-serve проект автоматически перекомпилируется при каждом сохранении файла. Файлы, содержащие только абстрактные классы, не перекомпилируются независимо от того, какие изменения я делаю. Я должен остановить и перезапустить сервер разработки, чтобы изменения были распознаны.

Файл примера, который не перекомпилируется автоматически при сохранении:

export abstract class Foo {
    abstract member1: any;
}

Файлы, содержащие конкретные классы, перекомпилируются присохранено:

import { Foo } from "./foo";

export class Bar implements Foo {
        public member1: any;
}

Я нашел обходной путь, заставив потребителя импортировать (нежелательный) конкретный экспорт: все файлы затем автоматически перекомпилируются:

export const unwanted: any;

export abstract class Foo {
        abstract member1: any;
    }

и

import { Foo, unwanted } from "./foo";

export class Bar implements Foo {
        public member1: any;
}

Является ли это поведение ошибкой или это задумано? Если это ошибка, может кто-нибудь подсказать, где было бы лучше всего сообщить об этом?

Будет ли это интересно для VSCode, Angular, Angular-cli или команды компиляторов Typescript?

PS - я использую абстрактный класс, а не интерфейс, потому что абстрактный класс может использоваться в качестве токена внедрения в Angular DI (интерфейсы не могут, поскольку их нет во время выполнения).

PS2 - экспортированная константа имеетбыть импортированным куда-то для обходного пути для работы. Простого добавления экспортированной константы в исходный файл недостаточно, чтобы файл перекомпилировался.

...