假设我是基于流的类型,其类型如下:
type baseTy = { x: number, y: number, z: number}
现在,我希望(对于实用程序)具有与baseTy
相同的类型,但是具有一个不同的属性:
type derivTy = {x: string, y: number, z: number}
很明显,我可以重新声明它,但这是多余的,可能在以后更新时导致问题。因此,我只想定义“差异”。如何使用流类型完成此操作?
我可以做到:
type derivTy = $Diff<baseTy, {x: any}> & {x: string}
但是,这看起来很冗长,并且没有清楚地显示其含义。有更好的方法吗?
答案 0 :(得分:1)
您可以散布类型,这就是我们在代码库中所做的,以创建相关类型:
type BaseT = { a: string, b: number }
type SubBaseT = { ...$Exact<BaseT>, b: string }
const foo: SubBaseT = { a: 'hello', b: 'world' }