Я всегда знал, чтобы импортировать мои операторы Observable
отдельно, чтобы ограничить время загрузки. Однако сегодня я заметил кое-что, что, надеюсь, кто-то может мне объяснить.Угловой и RxJS импорт
Я использую IntelliJ/WebStorm с Webpack.
Скажем, на странице в моем ngOnInit
у меня есть HTTP-вызов:
ngOnInit() {
this.http.get('https//:google.com').map(e => e);
}
Если я не импортируют оператора карты компилятор пожалуется, поэтому я импортировать его, как это:
import 'rxjs/add/operator/map';
Все хорошо в мире. Пока я не буду использовать Наблюдаемый. Итак, я добавлю.
ngOnInit() {
let test = Observable.create(subscriber => {
return null;
});
this.http.get('https//:google.com').map(e => e);
}
Теперь компилятор понятно жалуется, что не может найти Observable, так что я получаю IntelliJ/WebStorm импортировать его для меня, и добавляет это в верхней части моего файла:
import {Observable} from 'rxjs';
Все снова хорошо , Но этот новый импорт, по-видимому, делает импорт карты неактуальным. То, что я имею в виду, что, если я удалю импорт карты и просто оставить Observable один в, все отлично компилируется ...
Однако, если я указываю импортировать Наблюдаемые как это:
import {Observable} from 'rxjs/Observable';
Тогда я должен повторно добавить импорт для оператора карты ...
Я импортирую все RxJS, когда я импортирую мои наблюдения таким образом?
import {Observable} from 'rxjs';
Если да, то как я могу сказать IntelliJ, чтобы этого не делать и импортировать класс?
Это правильно. Если вы импортируете 'Observable' из' rxjs', вы будете импортировать ** все ** rxjs-операторы и функции (где среди карт), что довольно плохо, так как увеличивает размер файла. Я понятия не имею, можете ли вы сказать, что InteliJ более специфичен для автоматического импорта. – tjoskar
'import {Observable} from 'rxjs'' будет импортировать' Rx.d.ts' (проверить содержимое в нем;)), которое является ** всем **. Вам нужно импортировать его следующим образом: 'import {Observable} из 'rxjs/Observable';'. Проблема заключается не в том, что вы «импортируете» в свою область действия (между фигурными фигурными скобками), а в файле и рекурсивно все импортирует то, что занимает много времени транспиляции, чего мы не хотим. – Aitch
Спасибо tjoskar и Aitch, теперь это ясно. – Thibs