Firebase 类型和具有默认 tslint.json 的无隐式依赖关系



在阅读了最新的Firebase博客文章为什么你应该使用TypeScript编写Cloud Functions之后,我决定尝试tslint,这真是太棒了,尽管我的类型有问题。

我有一个导入声明,因为这样

import { DocumentSnapshot, DocumentReference, QuerySnapshot, WriteResult, Transaction, WriteBatch } from '@google-cloud/firestore';

但是即使我的代码运行良好,tslint 也会告诉我以下内容。

[tslint] 模块 '@google-cloud/firestore' 在 package.json 中未列为依赖项(无隐式依赖项(

Firebase + TypeScript 使用/导入类型的最佳做法是什么?

如果希望能够从模块导入某些定义,则必须将该模块声明为依赖项。 这些显示在package.json文件中的"functions "下。 如果您希望能够从 @google-cloud/firestore 导入,则需要添加对它的依赖:

npm install @google-cloud/firestore

现在,您可能想知道为什么可以在不声明该依赖项的情况下使用 Firestore。 这是因为Firebase Admin SDK对Firestore SDK有其自身的依赖性。 因此,当您直接使用管理 SDK 时,您可以访问由 Firestore SDK 创建的对象。 但是,如果您不自己声明依赖项,则您自己的模块无法直接从中导入。

我同意接受的答案。

或者,由于 Admin SDK 已经具有 Firestore 依赖项,因此您可以直接使用 admin.firestore.QuerySnapshotadmin.firestore.DocumentSnapshot 等,而不是安装 @google-cloud/firestore

这是更好的方法。您可以使用它访问所有内容。

这是我的做法。它不需要将'@google-cloud/firestore'作为依赖项添加到项目中,并且消除了代码中的大量admin.firestore.xxx

import * as admin from "firebase-admin";
import FieldValue = admin.firestore.FieldValue;
import DocumentSnapshot = admin.firestore.DocumentSnapshot;
// import anything else you want to alias
someRef.set({timestamp: FieldValue.serverTimestamp()});

最新更新