假设我是基于流的类型,其类型如下:
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}
然而,这看起来相当冗长,并没有清楚地表明其含义。有一个更好的方法吗?
您可以传播类型,这是我们在代码库中执行的操作,以创建相关的类型:
type BaseT = { a: string, b: number }
type SubBaseT = { ...$Exact<BaseT>, b: string }
const foo: SubBaseT = { a: 'hello', b: 'world' }