ts 高手帮忙看看,有没有这样的类型体操?

interface IUserInfo{
    username:string,
    id:string,
    type:string
}
const __user={
    username:'',
    type:''
}

const user=reactive<Pick<IUserInfo,keyof typeof __user>>(__user)

我想用 IUserInfo 来约束 user 的字段类型,user 只使用 IUserInfo 的部分字段,有没有更简便的写法。
比如:

const user = myReactive<IUserInfo>({ username:'', type: '' })

这里的 myReactive 函数我实现不了

阅读 1.5k
2 个回答

我怎么有点看不懂,是掺杂了点vue3的写法吗?

如果只想从IUuserInfo中筛选出几个字段来作为新的约束,关键词Pick就可以了,下面的两种方式都可以:

type UserType = Pick<IUserInfo, keyof typeof __user>; // 你自己写的这种方式就可以!

type UserType = Pick<IUserInfo, "username" | "type">;

image.png

新定义出来的类型就可以直接使用了。

declare function myReactive<K extends keyof IUserInfo>(obj: Pick<IUserInfo, K>): Pick<IUserInfo, K>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Microsoft
子站问答
访问
宣传栏