例如,我希望以下两种类型 - ViewModel 和 SaveModel 具有相同的键但不同的值类型,
type User = {
id: number;
name: string;
age: number;
}
type Address = {
street: string;
zip: string;
}
type ViewModel = {
user: User;
address: Address;
}
type SaveModel = {
user: number;
address: string;
}
Run Code Online (Sandbox Code Playgroud)
如何在打字稿中做到这一点?
由于 ViewModel 中的属性类型和 SaveModel 中的属性类型之间似乎没有任何关系,因此您可以创建一个类型来限制第二种类型具有相同的键:
type MustHaveKeys<V, S extends Record<keyof V, any>> = S;
type SaveModel = MustHaveKeys<ViewModel, {
user: number;
address: string;
}>
type SaveModelBad = MustHaveKeys<ViewModel, {
//user: number;
address: string;
}>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |