Firebase 类型和默认的非隐式依赖 tslint.json
Firebase types and no-implicit-dependencies with default tslint.json
在阅读了最新的 Firebase 博客 post Why you should use TypeScript for writing Cloud Functions 之后,我决定尝试 tslint
,结果非常棒,尽管我的类型有问题。
我有这样的导入语句
import { DocumentSnapshot, DocumentReference, QuerySnapshot, WriteResult, Transaction, WriteBatch } from '@google-cloud/firestore';
但即使我的代码运行良好,tslint 也会告诉我以下内容。
[tslint] Module '@google-cloud/firestore' is not listed as dependency in package.json (no-implicit-dependencies)
对于 using/importing 类型,Firebase + TypeScript 的最佳实践是什么?
如果您希望能够从模块中导入一些定义,则必须将该模块声明为依赖项。这些出现在 functions
下的 package.json
文件中。如果你希望能够从@google-cloud/firestore
导入,那么你需要添加对它的依赖:
npm install @google-cloud/firestore
现在,您可能想知道为什么可以在不声明该依赖项的情况下使用 Firestore。这是因为 Firebase Admin SDK 自身依赖于 Firestore SDK。因此,当您直接使用 Admin SDK 时,您可以访问 Firestore SDK 创建的对象。但是,当你不自己声明依赖时,你自己的模块不能直接从它导入。
我同意接受的答案。
或者,由于 Admin SDK 已经有 firestore 依赖,您可以直接使用 admin.firestore.QuerySnapshot
、admin.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()});
在阅读了最新的 Firebase 博客 post Why you should use TypeScript for writing Cloud Functions 之后,我决定尝试 tslint
,结果非常棒,尽管我的类型有问题。
我有这样的导入语句
import { DocumentSnapshot, DocumentReference, QuerySnapshot, WriteResult, Transaction, WriteBatch } from '@google-cloud/firestore';
但即使我的代码运行良好,tslint 也会告诉我以下内容。
[tslint] Module '@google-cloud/firestore' is not listed as dependency in package.json (no-implicit-dependencies)
对于 using/importing 类型,Firebase + TypeScript 的最佳实践是什么?
如果您希望能够从模块中导入一些定义,则必须将该模块声明为依赖项。这些出现在 functions
下的 package.json
文件中。如果你希望能够从@google-cloud/firestore
导入,那么你需要添加对它的依赖:
npm install @google-cloud/firestore
现在,您可能想知道为什么可以在不声明该依赖项的情况下使用 Firestore。这是因为 Firebase Admin SDK 自身依赖于 Firestore SDK。因此,当您直接使用 Admin SDK 时,您可以访问 Firestore SDK 创建的对象。但是,当你不自己声明依赖时,你自己的模块不能直接从它导入。
我同意接受的答案。
或者,由于 Admin SDK 已经有 firestore 依赖,您可以直接使用 admin.firestore.QuerySnapshot
、admin.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()});