簡體   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