繁体   English   中英

TypeScript 获取 class 实例的类型

[英]TypeScript obtain type for class instance

我正在使用一个,该库公开了 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);
  };

  // ...
}

如您所见,我需要访问我无权访问的UserModule中的useState (因为我无法import { UserModule } from 'magic-sdk';

对于函数,有ReturnType 所以如果我有一个普通的 function,我可以这样做:

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'];

暂无
暂无

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

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