
获得徽章 5
赞了这篇文章
赞了这篇文章
赞了这篇文章
赞了这篇文章
type UnionToIntersction<U> = (U extends U ? (arg: U) => any : never) extends (arg: infer R) => any ? R : never
type result = UnionToIntersction<{a:1}|{b:2}>
是怎么转成交叉的
type result = UnionToIntersction<{a:1}|{b:2}>
是怎么转成交叉的
评论
3
type attrs = 'a' | 'b' | 'c'
type attrObjs = Partial<{
a:string,
b:number,
c:boolean
}>
const attrObjs:attrObjs ={}
const config = (['a','b','c'] as attrs[]).reduce((prev,item)=>{
/*
问题在于item这时候是个联合类型,
这时候的attrObjs类型
*/
prev[item] = attrObjs[item] //这里的类型运算就成了attrObjs<item> 返回了所有的类型,
/*
我想要的是这里的item不应该返回所有,而是每循环一次,就使用其中一个,我想到了类型保护,但是这里的item的类型可能是不固定的,那这时候怎么办
*/
return prev
},{} as attrObjs)
type attrObjs = Partial<{
a:string,
b:number,
c:boolean
}>
const attrObjs:attrObjs ={}
const config = (['a','b','c'] as attrs[]).reduce((prev,item)=>{
/*
问题在于item这时候是个联合类型,
这时候的attrObjs类型
*/
prev[item] = attrObjs[item] //这里的类型运算就成了attrObjs<item> 返回了所有的类型,
/*
我想要的是这里的item不应该返回所有,而是每循环一次,就使用其中一个,我想到了类型保护,但是这里的item的类型可能是不固定的,那这时候怎么办
*/
return prev
},{} as attrObjs)
展开
评论
5
赞了这篇文章
赞了这篇文章