TypeScript 获取 class 个实例的类型
TypeScript obtain type for class instance
我正在使用公开 SDK 的 library,但不公开您可以使用它创建的其中一个对象 (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'];
我正在使用公开 SDK 的 library,但不公开您可以使用它创建的其中一个对象 (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'];