将一个对象的类型安全添加到另一个对象的属性的简写

用户名

假设我们有一个对象x类型X和对象y类型Y

我该如何合并(设置的所有属性)的y进入x,这样,如果Y不是一个亚型(部分)中X,编译器会抱怨?

注意:从Object.assign(x, y)技术上讲是可行的,但如果Y包含的属性不属于,则不会抱怨X

因此,我正在寻找一种{...x} = y

编辑:

x不应重新分配到,因为那样会更改的身份,x并且x可能会更改const

MacD

您可以编写一个函数,如果一种类型不是另一种类型的子集,它将抱怨

//U is a subset of T
function merge<T extends U, U>(a:T, b:U):T{
  return {...a, ...b}
}

如果您想覆盖,可以使用

function merge<T extends U, U>(a:T, b:U):T{
  for (const [key, value] of Object.entries(b)) {
    a[key as keyof U] = value
  }
  return a;
}

以下案例展示了它的工作原理

type A = {a:string, b:number, c:boolean}
type B = {a:number, b:number}
type C = {b:number, c:boolean}
type D = {a:string, d:string}

let a:A = {a:"Hi_a", b:1, c:true}
let b:B= {a:99, b:2}
let c:C = {b:3, c:false};
let d:D = {a:"Hi_d", d:"Low_d"}

let ab = merge(a,b) //compiler fail - Type B prop is incompatible
let ac = merge(a,c) //passes type C is a subset of type A
let ca = merge(c,a) //compiler fail - type A is a superset of type C
let ad = merge(a,d) // compiler fail - Type D has an extra property

游乐场链接

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将一个对象添加到另一个对象

来自分类Dev

将属性从一个对象数组添加到另一个对象

来自分类Dev

遍历对象中的对象,然后将属性添加到javascript中的另一个对象

来自分类Dev

在javascript中将一个对象添加到另一个对象

来自分类Dev

将JavaScript对象添加到另一个对象的问题

来自分类Dev

JPA ManyToMany:将现有对象添加到另一个对象

来自分类Dev

将一个对象的多个实例添加到另一个对象的数组中;

来自分类Dev

将一个对象的多个实例添加到另一个对象的数组中;

来自分类Dev

如何将内容从一个对象添加到另一个对象?

来自分类Dev

如何将一个对象添加到另一个对象的值中

来自分类Dev

根据值将属性从具有对象的一个数组添加到另一个对象

来自分类Dev

将属性添加到通过在构造函数中调用另一个方法创建的位图对象

来自分类Dev

如何将数组的元素添加到另一个对象并计数

来自分类Dev

将另一个类中的对象添加到JPanel

来自分类Dev

将数组作为对象添加到另一个数组

来自分类Dev

将另一个对象添加到现有的JSON中

来自分类Dev

将另一个类行添加到对象数组

来自分类Dev

如何将另一个变量添加到现有对象中?

来自分类Dev

为什么可以将一个类的对象添加到另一个类的LinkedList中?

来自分类Dev

如何将一个类中的对象添加到另一个类中的List。

来自分类Dev

如何将一个 JS 对象的数据添加到另一个

来自分类Dev

将对象添加到另一个对象

来自分类Dev

在javascript中将对象添加到另一个对象数组

来自分类Dev

PHP 或 jquery 代码将对象照片添加到另一个对象照片?

来自分类Dev

将对象添加到另一个对象 VBA

来自分类Dev

将另一个类的项目添加到另一个类的属性。目标C

来自分类Dev

将另一个类的项目添加到另一个类的属性。物镜

来自分类Dev

C ++将具有重载构造函数的对象添加到另一个对象

来自分类Dev

将链接的对象添加到C#ASP.Net MVC中的另一个对象

Related 相关文章

  1. 1

    如何将一个对象添加到另一个对象

  2. 2

    将属性从一个对象数组添加到另一个对象

  3. 3

    遍历对象中的对象,然后将属性添加到javascript中的另一个对象

  4. 4

    在javascript中将一个对象添加到另一个对象

  5. 5

    将JavaScript对象添加到另一个对象的问题

  6. 6

    JPA ManyToMany:将现有对象添加到另一个对象

  7. 7

    将一个对象的多个实例添加到另一个对象的数组中;

  8. 8

    将一个对象的多个实例添加到另一个对象的数组中;

  9. 9

    如何将内容从一个对象添加到另一个对象?

  10. 10

    如何将一个对象添加到另一个对象的值中

  11. 11

    根据值将属性从具有对象的一个数组添加到另一个对象

  12. 12

    将属性添加到通过在构造函数中调用另一个方法创建的位图对象

  13. 13

    如何将数组的元素添加到另一个对象并计数

  14. 14

    将另一个类中的对象添加到JPanel

  15. 15

    将数组作为对象添加到另一个数组

  16. 16

    将另一个对象添加到现有的JSON中

  17. 17

    将另一个类行添加到对象数组

  18. 18

    如何将另一个变量添加到现有对象中?

  19. 19

    为什么可以将一个类的对象添加到另一个类的LinkedList中?

  20. 20

    如何将一个类中的对象添加到另一个类中的List。

  21. 21

    如何将一个 JS 对象的数据添加到另一个

  22. 22

    将对象添加到另一个对象

  23. 23

    在javascript中将对象添加到另一个对象数组

  24. 24

    PHP 或 jquery 代码将对象照片添加到另一个对象照片?

  25. 25

    将对象添加到另一个对象 VBA

  26. 26

    将另一个类的项目添加到另一个类的属性。目标C

  27. 27

    将另一个类的项目添加到另一个类的属性。物镜

  28. 28

    C ++将具有重载构造函数的对象添加到另一个对象

  29. 29

    将链接的对象添加到C#ASP.Net MVC中的另一个对象

热门标签

归档