【发布时间】:2021-03-06 13:37:16
【问题描述】:
如何在不修改 @types 文件的情况下从节点包中扩展类型?
import { Session, useSession } from 'next-auth/client'
// I AM TRYING TO EXTEND THE Session TYPE
export default function Component() {
// useSession() returns type-> useSession(): [Session, boolean]
const [session]: [<ENTER EXTENDED TYPE HERE>, boolean] = useSession()
...
}
来自@types/next-auth的类型
type Session = SessionBase & GenericObject;
interface SessionBase {
user: User;
accessToken?: string;
expires: string;
}
interface User {
name?: string | null;
email?: string | null;
image?: string | null;
}
结果应该是这样的类型:
type NewSession = NewSessionBase & Session;
interface NewSessionBase {
user: {
name?: string | null;
email?: string | null;
image?: string | null;
myCustomData?: {
uid: string | null;
}
};
accessToken?: string;
expires: string;
}
这将修复错误:“TS2741”、“类型中缺少属性但类型中需要属性”
【问题讨论】:
标签: node.js reactjs typescript