我找到了這個功能:
function sliceIntoChunks(arr, chunkSize) {
const res = [];
for (let i = 0; i < arr.length; i = chunkSize) {
const chunk = arr.slice(i, i chunkSize);
res.push(chunk);
}
return res;
}
我想輸入它:
export const sliceIntoChunks = <T>(
arr: Array<T>,
chunkSize: number
): Array<T> => {
const res: T[] = [];
for (let i = 0; i < arr.length; i = chunkSize) {
const chunk = arr.slice(i, i chunkSize);
res.push(chunk);
}
return res;
};
在這里得到一個錯誤: res.push(chunk);
錯誤:
“T[]”型別的引數不可分配給“T”型別的引數。
'T' 可以用與 'T[]' 無關的任意型別實體化。
我該如何正確實施?
uj5u.com熱心網友回復:
結果陣列將是陣列陣列,因此:
const sliceIntoChunks = <T>(
arr: Array<T>,
chunkSize: number
): Array<T[]> => {
const res = [];
for (let i = 0; i < arr.length; i = chunkSize) {
const chunk = arr.slice(i, i chunkSize);
res.push(chunk);
}
return res;
};
操場
uj5u.com熱心網友回復:
Array.prototype.slice回傳一個陣列,一個子集arr。所以 Ifarr是 type Array<T>,那么chunk也是。但res也是 type Array<T>(或等價物T[]),所以res.push需要一個 type 的引數T,而不是Array<T>。
嘗試將型別res從更改T[]為T[][]。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/378808.html
標籤:javascript 反应 打字稿
