在打字稿中选择一种相交类型

Tasos P.

我发现自己处于以下情况:

具有类型变量A,我将其传递给API,该API返回类型值A & B然后,我必须将此返回值发布到HTTP端点,该端点期望类型的有效负载A

interface A {
  name: string;
}

interface B {
  type: string;
}

function api(arg: A): A & B {
  return { name: arg.name, type: 'Blah' };
}

const x: A = { name: 'Foo' };

const y: A & B = api(x);

const z: A = y;

// Simulate HTTP call with payload z of type A
console.log(JSON.stringify(z));

输出为{"name":"Foo","type":"Blah"}尽管z是类型A,但有效负载仍包含B的字段。

如何删除交集类型(B)之一并仅保留类型A,以使输出为{"name":"Foo"}

jpthesolver2

Titian对此进行了很好的解释,但是不幸的是,接口是编译时组件,而不是运行时,因此很难解释这些情况。使用他们的解决方案,您可以使其适应您的情况以获得类似

function extract<T>(properties: Record<keyof T, true>) {
  return function <TActual extends T>(value: TActual): T {
    const result = {} as T;
    for (const property of Object.keys(properties) as Array<keyof T>) {
      result[property] = value[property];
    }
    return result;
  };
}

const extractA = extract<A>({
  name: true,
});

// { name: 'Foo' }
console.log(extractA(z));

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在打字稿中将一种类型映射到另一种类型

来自分类Dev

如何在打字稿中制作一种类型的函数链(数组)?

来自分类Dev

有没有办法在打字稿中描述一种“ keyfor”?

来自分类Dev

从列表中选择一种类型

来自分类Dev

从列表中选择一种类型

来自分类Dev

打字稿无法理解“一种类型”中的对象键

来自分类Dev

如何在打字稿文件的一组单选按钮中选择一个特定的单选按钮?

来自分类Dev

从4种类型的2种模板功能中选择一种

来自分类Dev

从Django的元组中选择一种

来自分类Dev

打字稿:如何使用同一界面中的地图从另一种类型派生一种

来自分类Dev

在IntelliJ中,有没有一种方法可以单击变量并检查其类型(打字稿)?

来自分类Dev

在Python中选择所有文件类型的另一种方法

来自分类Dev

在打字稿中具有两种可能类型的函数参数

来自分类Dev

在打字稿函数中声明“ this”的类型?

来自分类Dev

在打字稿中声明对象类型

来自分类Dev

在打字稿中创建数组类型

来自分类Dev

在打字稿中映射对象类型

来自分类Dev

有没有一种方法来获取属性的声明类型,而不是打字稿中赋值的类型

来自分类Dev

有没有一种类型安全的方法来将较大的对象减少()为打字稿中的新类型?

来自分类Dev

xpath可以从一个元素中选择另一种类型的元素吗?

来自分类Dev

在QlikSense中的图表中选择一种度量

来自分类Dev

从CSS的字体家族中选择一种字体

来自分类Dev

打字稿中是否有一种方法可以将参数限制为对象的键之一,并且该键具有某种类型?

来自分类Dev

在打字稿中使用扩展类型进行类型推断

来自分类Dev

打字稿array.map无法正确分配相交类型

来自分类Dev

在打字稿中导出联合类型别名

来自分类Dev

如何在打字稿中定义对象类型的对象

来自分类Dev

在打字稿中声明“返回类型”的简写

来自分类Dev

您可以在打字稿中动态扩展类型吗?

Related 相关文章

  1. 1

    在打字稿中将一种类型映射到另一种类型

  2. 2

    如何在打字稿中制作一种类型的函数链(数组)?

  3. 3

    有没有办法在打字稿中描述一种“ keyfor”?

  4. 4

    从列表中选择一种类型

  5. 5

    从列表中选择一种类型

  6. 6

    打字稿无法理解“一种类型”中的对象键

  7. 7

    如何在打字稿文件的一组单选按钮中选择一个特定的单选按钮?

  8. 8

    从4种类型的2种模板功能中选择一种

  9. 9

    从Django的元组中选择一种

  10. 10

    打字稿:如何使用同一界面中的地图从另一种类型派生一种

  11. 11

    在IntelliJ中,有没有一种方法可以单击变量并检查其类型(打字稿)?

  12. 12

    在Python中选择所有文件类型的另一种方法

  13. 13

    在打字稿中具有两种可能类型的函数参数

  14. 14

    在打字稿函数中声明“ this”的类型?

  15. 15

    在打字稿中声明对象类型

  16. 16

    在打字稿中创建数组类型

  17. 17

    在打字稿中映射对象类型

  18. 18

    有没有一种方法来获取属性的声明类型,而不是打字稿中赋值的类型

  19. 19

    有没有一种类型安全的方法来将较大的对象减少()为打字稿中的新类型?

  20. 20

    xpath可以从一个元素中选择另一种类型的元素吗?

  21. 21

    在QlikSense中的图表中选择一种度量

  22. 22

    从CSS的字体家族中选择一种字体

  23. 23

    打字稿中是否有一种方法可以将参数限制为对象的键之一,并且该键具有某种类型?

  24. 24

    在打字稿中使用扩展类型进行类型推断

  25. 25

    打字稿array.map无法正确分配相交类型

  26. 26

    在打字稿中导出联合类型别名

  27. 27

    如何在打字稿中定义对象类型的对象

  28. 28

    在打字稿中声明“返回类型”的简写

  29. 29

    您可以在打字稿中动态扩展类型吗?

热门标签

归档