![](/img/trans.png)
[英]What's the best way to use a type assertion with destructuring assignment?
[英]what's the best way to type a mock store?
我们的测试代码在我们的测试中充斥着这样的代码......
const mockState = {
client: {
users: {
results: {
something: -91893.21,
},
},
},
};
显然 mockState 是无类型的。 我不能将其键入为 RootState,因为该接口具有该测试不需要的大量属性。
我查看了 Partial 和 DeepPartial 但它们并没有真正帮助,因为任何 json 都会实现任何 DeepPartial,因为每个属性都是可选的。 有没有办法输入 json object 以便它的所有属性都匹配特定类型,但并非所有属性都是必需的。 令人困惑的问题。 我想将 mockState 输入到 IWhatever 以便它不会编译,除非 IWhatever 有一个名为 client 的属性,它有一个名为 users 等的属性。
如果您在执行变量定义object的同时进行赋值,那么新鲜度就会启动,并且会阻止您添加任何其他属性。
type RootState = {
client: {
a: {
something: number
},
b: {
something: number
}
},
server: {
a: {
something: number
},
b: {
something: number
}
}
}
// Reference DeepPartial
type DeepPartial<T> = {
[P in keyof T]?: T[P] extends Array<infer U>
? Array<DeepPartial<U>>
: T[P] extends ReadonlyArray<infer U>
? ReadonlyArray<DeepPartial<U>>
: DeepPartial<T[P]>
};
// Okay
const mockState: DeepPartial<RootState> = {
client: {
a: {
something: 123
}
}
}
// Not Okay
const mockStateBad: DeepPartial<RootState> = {
client: {
a: {
somethings: 123 // ERROR
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.