首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何使TypeScript泛型类仅限于对象数组的类型?

要使TypeScript泛型类仅限于对象数组的类型,可以使用类型约束和条件类型来实现。

首先,定义一个泛型类,并使用类型约束来限制泛型参数必须为对象类型:

代码语言:txt
复制
class ObjectArray<T extends object> {
  private array: T[];

  constructor(array: T[]) {
    this.array = array;
  }

  // 其他方法和属性
}

在上述代码中,T extends object表示泛型参数T必须为对象类型。

接下来,使用条件类型来进一步限制泛型类仅接受对象数组类型的参数。可以使用ExtractArray类型来判断传入的参数是否为对象数组类型:

代码语言:txt
复制
class ObjectArray<T extends object> {
  private array: T[];

  constructor(array: T[]) {
    if (Array.isArray(array) && array.every(item => typeof item === 'object')) {
      this.array = array;
    } else {
      throw new Error('参数必须为对象数组类型');
    }
  }

  // 其他方法和属性
}

在上述代码中,Array.isArray(array)用于判断参数是否为数组类型,array.every(item => typeof item === 'object')用于判断数组中的每个元素是否为对象类型。如果判断条件不满足,则抛出错误。

使用示例:

代码语言:txt
复制
const objArray = new ObjectArray([{ name: 'Alice' }, { name: 'Bob' }]);

上述示例中,objArray是一个ObjectArray的实例,传入的参数为对象数组类型,符合泛型类的限制。

如果传入的参数不是对象数组类型,则会抛出错误:

代码语言:txt
复制
const objArray = new ObjectArray([1, 2, 3]); // 抛出错误:参数必须为对象数组类型

总结:

通过使用类型约束和条件类型,可以使TypeScript泛型类仅限于对象数组的类型。在泛型类的构造函数中,通过判断传入的参数是否为对象数组类型,来限制泛型类的使用范围。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

领券