Firestore 9 onSnapshot TypeScript错误:“展开类型只能从对象类型创建”(ts(2698))通常是由于TypeScript类型检查导致的。这个错误提示你尝试展开一个非对象类型的值。
Firestore是Google Firebase提供的一个NoSQL文档数据库,用于存储和同步数据。onSnapshot是Firestore中的一个方法,用于监听集合或文档的变化。
在TypeScript中,展开操作符(...
)只能用于对象类型。如果你尝试对非对象类型使用展开操作符,就会触发这个错误。
假设你有一个Firestore集合监听器:
import { collection, onSnapshot, query, DocumentSnapshot } from 'firebase/firestore';
const q = query(collection(db, 'users'));
onSnapshot(q, (snapshot) => {
snapshot.docs.forEach((doc) => {
if (doc.exists()) {
const data = doc.data();
// 错误示例
// const user = { ...data }; // 这里可能会触发ts(2698)错误
// 正确示例
const user = { ...data as object }; // 使用类型断言
console.log(user);
}
});
});
这个错误通常出现在实时数据监听的场景中,比如聊天应用、实时更新的用户列表等。
确保在使用展开操作符时,值是一个对象类型。如果TypeScript无法推断类型,可以使用类型断言来解决这个问题。通过这种方式,你可以避免“展开类型只能从对象类型创建”的错误。
没有搜到相关的沙龙
领取专属 10元无门槛券
手把手带您无忧上云