打字稿接口符合 Firestore 查询

dwj*_*ton 6 firebase typescript google-cloud-firestore

我如何使用 Firebase 和我自己的 Typescript 接口?

IE。我在这里有一个函数,我将需要完整的Payment对象(不仅仅是增量),所以我通过DocumentReference对象获得了它。

function doSomethingWithPayment(payment: Payment) {
   console.log(payment.amount); 
}


exports.resolveStripeCharge = functions.firestore.document('/payments/{paymentId}')
    .onWrite((change : Change <DocumentSnapshot>) => {

        change.after.ref.get().then((doc: DocumentSnapshot )=> {
            const payment : Payment =   doc.data(); // tslint warning here. 
            doSomethingWithPayment(payment); 

        })


[ts]
Type 'DocumentData' is not assignable to type 'Payment'.
  Property 'amount' is missing in type 'DocumentData'.
const payment: Payment
Run Code Online (Sandbox Code Playgroud)

我知道返回的对象不一定符合接口 - 但无论如何 - 我应该在这里做什么 - 如果我想强制输入?

我只是使用:

 const payment : Payment =   <Payment>doc.data();
Run Code Online (Sandbox Code Playgroud)

或者有更好的解决方案吗?

Aka*_*han 0

您拥有的解决方案只是将doc.data(). 这不是解决方案,而是一种解决方法。因为,这样做您可能会遇到运行时错误。

所以,我的建议是,只需使用:

const payment = doc.data()

如果是const,将自动强制输入。

或者

您可以编写一个将DocumentData类型转换为 Payment类型的函数。通过添加缺少的参数。