我有两个类型A和B,我希望实现一个类型TestType,这个类型数组元素,要么是A要么是B,图上两种写法都无法满足需求,请问应该如何实现这个需求
我有两个类型A和B,我希望实现一个类型TestType,这个类型数组元素,要么是A要么是B,图上两种写法都无法满足需求,请问应该如何实现这个需求
type TestType = Array<A> | Array<B>
抱歉之前理解有误没有看太清楚
以下为根据楼上老哥的答案进行的修改,添加了 A,B有相同key的情况,如有错误还是提出予以改正
type PickOne<Type1, Type2> =
| ({
[K in keyof Type1]: Type1[K]
} & { [K in keyof Type2]?: K extends keyof Type1? Type1[K] : never })
| ({
[K in keyof Type2]: Type2[K]
} & { [K in keyof Type1]?: K extends keyof Type2? Type2[K] : never })
更新,可以参考评论链接。
// 在其他答案基础上,改进下
type PickOne<T1, T2> =
| (T1 & { [K in keyof T2]?: K extends keyof T1 ? T1[K] : never })
| (T2 & { [K in keyof T1]?: K extends keyof T2 ? T2[K] : never })
type TestType = PickOne<A, B>
下面答案有误。
这不是元组吗? 你看:https://www.typescriptlang.org/docs/handbook/2/objects.html#t...
type TestType = [...(A | B)[]]
8 回答4.8k 阅读✓ 已解决
6 回答3.6k 阅读✓ 已解决
5 回答2.9k 阅读✓ 已解决
5 回答6.4k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
使用:
更新