Исправление несовместимости типов между пакетами `firebase-admin` и` firebase` - PullRequest
1 голос
/ 08 апреля 2019

Я пишу функции, предназначенные для манипулирования данными Firestore либо внутри клиентского кода, либо внутри облачных функций.

К сожалению, похоже, что типы TypeScript для firebase (используется для клиентского кода) и firebase-admin (для облачных функций), хотя и почти идентичны, несовместимы. У кого-нибудь есть решение помимо импорта и псевдонимов всех типов?

В настоящее время я получаю сообщения об ошибках типа:

Type 'FirebaseFirestore.DocumentReference' is not assignable to type 'firebase.firestore.DocumentReference'

Это потому, что я определяю свои интерфейсы в моей клиентской кодовой базе, используя firebase, но затем пытаюсь инициализировать экземпляр и использовать его в моей кодовой базе функций, используя firebase-admin. Но та же ошибка произойдет, если я поменяю их местами.

К сожалению, похоже, что определения TypeScript TypeK Node Admin не являются надмножеством определений Client TypeScript, даже если кажется, что они сделаны с точки зрения интерфейса.

1 Ответ

1 голос
/ 08 апреля 2019

Вы можете создать свой собственный интерфейс, который копирует общие элементы клиентского и серверного SDK, и реализовать обертку вокруг их реализаций для переключения по мере необходимости. Оболочка просто делегирует ожидаемый пункт назначения, а также, возможно, преобразует любые значения часового типа, например, возвращаемые FieldValue.serverTimestamp (), при необходимости.

Другими словами, нет простого решения. Это похоже на создание любой абстракции в нескольких реализациях, за исключением того, что API обычно не нуждаются в переводе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...