小编nac*_*111的帖子

TypeScript重载中如何区分类型对象和数组?

这是我的代码:

public foo<T>(src: object, type: Type<T>): T;
public foo<T>(src: any[], type: Type<T>[]): T[];
public foo<T>(src: object | any[], type: Type<T> | Type<T>[]): T | T[] {...}
Run Code Online (Sandbox Code Playgroud)

我想做的是保证以下约束的重载:

  • 一个对象(不是数组),一个类型 > 单个对象
  • 一个数组,一个 Type > 数组的数组

问题是类型对象也可以是数组,因此以下组合成为可能:

foo([...], MyType) > {}
Run Code Online (Sandbox Code Playgroud)

有办法避免吗?或者你能推荐我一种重写重载的方法吗?

javascript generics types overloading typescript

5
推荐指数
1
解决办法
1283
查看次数

标签 统计

generics ×1

javascript ×1

overloading ×1

types ×1

typescript ×1