TypeScript获取类实例的类型



我使用的是一个公开SDK的库,但不是您可以用它创建的一个对象(user(的类型(UserModule(。

import { Magic } from 'magic-sdk';
// ...
function useMagicLinkAuthentication() {
const [magicReady, setMagicReady] = usePromise<Magic>();
const [isMagicInitialized, setMagicInitialized] = useState(false);
const [user, setUser] = useState<UserModule | null>(null);
// ...
const signIn = async (email: string) => {
const magic = await magicReady;
if (await magic.user.isLoggedIn()) {
return setUser(magic.user);
}
await magic.auth.loginWithMagicLink({ email });
return setUser(magic.user);
};
// ...
}

正如你所看到的,我需要访问useState中的UserModule,但我无法访问(因为我不能访问import { UserModule } from 'magic-sdk';.

函数有ReturnType。所以如果我有一个常规函数,我可以做:

export const createFoo = () => { /* ... returns a Foo ... */ } 
export type Foo = ReturnType<typeof createFoo>;

TypeScript中的类是否有等价物,以便我可以访问new MyClass的实例并获得

// broken pseudo-code
export type Foo  = Something<typeof MyClass.foo>

我需要以某种方式得到typeof magic.user,也就是UserModule类型。

您可以使用构造函数中的type别名:

type UserModule = Magic['user'];

最新更新