【发布时间】:2021-12-12 13:09:51
【问题描述】:
背景:
我正在为 firestore 创建一个类型安全的包装器,该包装器现在可以对每种数据类型和所有操作进行类型安全
包装器:https://www.npmjs.com/package/firelord
==============
问题:
但是,有一种特殊的数据类型我不能安全地键入它,即 Firestore.FieldValue (increment, servertimestamp, arrayunion, arrayremove)
这个东西好像没办法缩小范围,挺郁闷的
我找不到任何解决方案,这让我开始思考人们一直以来是如何处理 FieldValue 的,还是他们只是随意处理它?
我现在想到的当前解决方案是,我创建一个辅助函数,例如,arrayUnion
const arrayUnion = <T>(value: T) => {
return firestore.FieldValue.arrayUnion(value) as unknown as T[]
}
那么它将匹配定义的数据类型。
我认为这应该可行,但是有更好的方法吗?是否可以缩小 Firestore.FieldValue 的范围?
我正在认真寻找一个明智的解决方案,因为这是使我的 Firestore 包装器完全类型安全和可扩展的难题的最后一部分
【问题讨论】:
-
我相信您在这里唯一的选择是使用帮助函数作为您已经提到的包装器。我真的不认为还有其他方法。
标签: typescript firebase google-cloud-firestore