typecipt数据点类型



我试图实现一个简单的事情(IMO),但似乎我没有足够的经验与Typescript。

我想定义一个传递以下表达式的类型:

const dp: DataPoint = [1, 2];
const dp2: DataPoint = [1, 2, 3];
const dps: DataPoints = [[1, 2], [2, 3]];
const dps2: DataPoints = [[1, 2, 3], [2, 3, 4]];

我这样做了:

export type DataPoint<T = number, D = number> = [number, T, D?];
export type DataPoints<T = number, D = number> = DataPoint<T, D>[];

并尝试了许多其他方法,但最终所有这些方法的结果类型都包含两个泛型:DataPoint<number, number>DataPoints<number, number>。有没有办法从dp的例子中推断出never,并有DataPoint<number>而不是<DataPoint<number, number>?

也许你可以使用元组来使事情更简单:

type DataPoint = 
| [number, number]
| [number, number, number]
| [[number, number], [number, number]]
| [[number, number, number], [number, number, number]];
const dp: DataPoint = [1, 2];
const dp2: DataPoint = [1, 2, 3];
const dps: DataPoint = [[1, 2], [2, 3]];
const dps2: DataPoint = [[1, 2, 3], [2, 3, 4]];

或者如果你想让它更灵活一点,使用数组:

type DataPoint = 
| [number, number]
| [number, number, number]
| Array<[number, number]>
| Array<[number, number, number]>

最新更新