繁体   English   中英

Firebase v8 Typescript 用户定义导入

[英]Firebase v8 Typescript definition import for User

使用以前版本的 Firebase,我使用以下方式导入User的 Typescript 定义:

import {User} from 'firebase';

在引入v8之后,此导入不再有效:

模块'"../../../../node_modules/firebase"'没有导出成员'User'。 您的意思是改用“从“../../../../node_modules/firebase”导入用户”吗?

发行说明指出 CJS 捆绑包已被删除这一事实,但并未提及现在应如何解决此导入问题。

任何帮助表示赞赏,在此先感谢您。

你可以这样说:

import firebase from "firebase/app"
const user: firebase.User = ...

或者,如果您想缩写它:

import firebase from "firebase/app"
type User = firebase.User
const user: User = ...

User Firebase JS SDK v8.0.0 导入User ,我能够解决我的问题,如下所示:

import {User} from '@firebase/auth-types';

您是否尝试过导入 firebase 然后使用firebase.User访问 User ? 它显然更笨拙,但对我有用。

编辑:我之前也遇到了导入冲突的问题 - 我有一个名为 firebase.ts 的文件导致我的应用程序关闭。 只要提到它如果你碰巧有类似的东西

另一个替代import荷兰国际集团firebase是在添加火力类型index.d.ts文件:

/// <reference types="firebase" />

type Firebase = typeof firebase.default

type FirebaseApp = firebase.default.app.App

type FirebaseUser = firebase.default.User

注意:我必须使用firebase.default而不是firebase因为我使用的是三重斜线指令/// <reference types="..." />

您可以通过在index.d.ts文件中导入index.d.ts来省略.default

import firebase from "firebase/app"

type Firebase = typeof firebase

type FirebaseApp = firebase.app.App

type FirebaseUser = firebase.User

对于 V9.0.0(Web 版本 9(模块化),这可以通过

// make alias for greater readability
import { User as FirebaseUser } from "firebase/auth";

然后您可以通过以下方式使用它:

// here direct use the type inside a hooks 
const [user, setUser] = useState<FirebaseUser | null>(null)
user: firebase.default.User | null = null;

为我工作

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM