在阅读最新的Firebase博客文章Why you should use TypeScript for writing Cloud Functions之后,我决定尝试tslint
并且它很棒,虽然我的类型有问题。
我有一个导入声明
import { DocumentSnapshot, DocumentReference, QuerySnapshot, WriteResult, Transaction, WriteBatch } from '@google-cloud/firestore';
但即使我的代码工作正常,tslint告诉我以下内容。
[tslint]模块' @ google-cloud / firestore'在package.json中没有列为依赖项(无隐式依赖项)
Firebase + TypeScript使用/导入类型的最佳做法是什么?
答案 0 :(得分:5)
如果您希望能够从模块导入某些定义,则必须将该模块声明为依赖项。它们会显示在package.json
下的functions
文件中。如果您希望能够从@google-cloud/firestore
导入,则需要添加依赖项:
npm install @google-cloud/firestore
现在,您可能想知道为什么可以在不声明依赖性的情况下使用Firestore。这是因为Firebase Admin SDK对Firestore SDK有自己的依赖性。因此,当您直接使用Admin SDK时,您可以访问Firestore SDK创建的对象。但是,当您没有自己声明依赖项时,您自己的模块无法直接从中导入。
答案 1 :(得分:2)
我同意接受的答案。
代替安装@google-cloud/firestore
。您可以使用admin.firestore.QuerySnapshot
,admin.firestore.DocumentSnapshot
等...
这是更好的方法。您可以通过此访问所有内容。
答案 2 :(得分:0)
这是我的方法。不需要将'@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()});