import 'firebase/firestore';
Это означает "запустить код в firebase / firestore, и мне все равно, экспортирует ли он что-нибудь"; Код, который он выполняет, это этот файл здесь , и часть того, что делает этот код, импортирует firebase
из @firebase/app
и регистрируется в нем. Вы импортируете тот же самый объект firebase
, поэтому все, что было добавлено к этому объекту, доступно и вам.
Строки кода, которые они используют для добавления firestore в firebase, таковы:
export function registerFirestore(instance: FirebaseNamespace): void {
configureForFirebase(instance);
instance.registerVersion(name, version);
}
registerFirestore(firebase);
Чтобы понять, что именно они делают, потребуется пройтись по их кодовой базе, чтобы увидеть, что вызывается ( это заканчивается в этой функции ), но я могу продемонстрировать упрощенный эквивалент, подобный этому:
// File 1, the equivalent of firebase/app
export default {}; // no properties on it.
// File 2, the equivalent of firebase/firestore
import firebase from 'firebase/app'
// mutating the object that was imported
firebase.firestore = "I'm firestore!";
// Your file
import firebase from 'firebase/app';
import 'firebase/firestore';
console.log(firebase.firestore); // logs out "I'm firestore!", because the second import added a property to the object.