[英]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.