【问题标题】:Construct a type that only accepts object types?构造一个只接受对象类型的类型?
【发布时间】:2021-07-12 22:05:04
【问题描述】:

有什么方法可以创建一个类型别名,它排除每个基本类型(stringnumberboolean 等)并且只接受一个对象类型? (如{}[]

【问题讨论】:

  • Array<any> | Record<any, any>;?
  • 您确定需要类型别名吗?听起来您在描述object 类型。
  • @dave 就是这样!我知道我需要一个 Utility Type,但不知道是哪一个。
  • @CaseyRule 我尝试使用 Object 类型,但它一直接受字符串和数字。我不知道为什么

标签: javascript typescript types


【解决方案1】:

对于泛型类型,您可以使用 extends 关键字来限制可以作为泛型类型传递的类型

type OnlyStrOrArr<T extends object | Array<any>> = T;

如果你尝试传递另一种类型,Typescript 会抛出错误。

这也适用于其他类型的泛型,例如类和接口。

【讨论】:

    【解决方案2】:

    在 TypeScript 中,Objectobject 类型之间存在差异。您想要的是 2.2 中引入的小写 object type。此类型专门表示任何非原始值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-19
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多