如何告诉 TypeScript 我正在返回输入类型数组的数组?
How to tell TypeScript that I'm returning an array of arrays of the input type?
我有一个分块数组的函数:
const chunkArray = (inputArray: any[], chunks: number) => {
const chunkedArray = [];
let i = 0;
const n = inputArray.length;
while (i < n) {
chunkedArray.push(inputArray.slice(i, (i += chunks)));
}
return chunkedArray;
};
export default chunkArray;
我希望我的 linter 知道对于给定的输入数组,输出数组是什么样的。例如
const chunkedArrays = chunkArray([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]
我的 linter 现在应该 chunkedArrays
是一个数字数组。目前它说它是任意数组的数组。
我怎样才能做到这一点?
您需要为您的函数添加泛型类型参数。 type 参数将捕获输入数组中元素的实际类型,然后您可以使用此通用类型来指定它与您的结果的关系:
const chunkArray = <T>(inputArray: T[], chunks: number) => {
const chunkedArray: T[][] = []; // use T as the type for chunkedArray
let i = 0;
const n = inputArray.length;
while (i < n) {
chunkedArray.push(inputArray.slice(i, (i += chunks)));
}
return chunkedArray;
};
const chunkedArrays = chunkArray([1, 2, 3, 4, 5], 2); // number[][]
const chunkedArraysString = chunkArray(["1", "2", "3", "4", "5"], 2); // string[][]
我有一个分块数组的函数:
const chunkArray = (inputArray: any[], chunks: number) => {
const chunkedArray = [];
let i = 0;
const n = inputArray.length;
while (i < n) {
chunkedArray.push(inputArray.slice(i, (i += chunks)));
}
return chunkedArray;
};
export default chunkArray;
我希望我的 linter 知道对于给定的输入数组,输出数组是什么样的。例如
const chunkedArrays = chunkArray([1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]
我的 linter 现在应该 chunkedArrays
是一个数字数组。目前它说它是任意数组的数组。
我怎样才能做到这一点?
您需要为您的函数添加泛型类型参数。 type 参数将捕获输入数组中元素的实际类型,然后您可以使用此通用类型来指定它与您的结果的关系:
const chunkArray = <T>(inputArray: T[], chunks: number) => {
const chunkedArray: T[][] = []; // use T as the type for chunkedArray
let i = 0;
const n = inputArray.length;
while (i < n) {
chunkedArray.push(inputArray.slice(i, (i += chunks)));
}
return chunkedArray;
};
const chunkedArrays = chunkArray([1, 2, 3, 4, 5], 2); // number[][]
const chunkedArraysString = chunkArray(["1", "2", "3", "4", "5"], 2); // string[][]