我正在尝试从使用JavaScript迁移我的React和firebase项目以使用Typescript, 所以在javascript basde中,我做了一个自定义钩子,以便从firestore中获取文档, 参数是文档的路径。但是,根据路径的不同,返回值会有所不同,那么如何在打字稿中编写可重用的返回值?
在这里,我定义了预期的返回值之一,这些值经过硬编码, 那么我可以使用推理类型以及如何实现它,还是有更好的方法?
import { useEffect, useState } from 'react';
import { db } from './firebase';
const useDoc = (path: any) => {
const [docs, setDocs] = useState();
useEffect(() => {
return db.doc(path).onSnapshot((docs: any) => {
setDocs({
...docs.data(),
id: docs.id
});
});
}, [path]);
return docs as ChannelInfo;
};
interface ChannelInfo {
topic: string;
id: string;
}
export default useDoc;