在文件中,user.ts我有以下代码:
export default {
eventsTracked: {
},
loggedIn(): boolean {
return !!readCookie("user_id")
}
}
Run Code Online (Sandbox Code Playgroud)
是否可以在其他地方自动推断可用属性(等)?
例如,在window.d.ts我想做的文件中
import User from "user"
declare global {
interface Window {
user: User
}
}
export {}
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试这样做时,出现错误:
2749: 'User' refers to a value, but is being used as a type here
Run Code Online (Sandbox Code Playgroud)
你会建议我做什么?
我的目标是window.user在我的代码中引用的任何地方,它都将是类型感知的。
正如 Yash Baheti 所指出的,创建一个实际的类型或接口,然后创建实现它的对象是一个很好的做法。但是,如果您真的希望打字稿自动从您的对象推断类型,您可以使用typeof关键字。
在user.ts:
const user = {
.. your object with properties/methods/ecc ...
}
export type UserType = typeof user
export default user
Run Code Online (Sandbox Code Playgroud)
在window.d.ts:
import { UserType } from 'user';
declare global {
interface Window {
user: UserType
}
}
export {}
Run Code Online (Sandbox Code Playgroud)
请注意,除非您的用户对象中的每个项目都正确键入,否则 typescript 将推断出可能不适合您的情况的类型。我建议你正确输入所有内容
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |