在啟用strict和noUncheckedIndexedAccess選項的情況下,在 TypeScript 中向后回圈陣列的最佳方法是什么?最經典的方法在此配置中不再有效:
function doSomething(i: number): void {
...
}
const arr = [1, 2, 3];
for (let i = arr.length - 1; i >= 0; --i) {
doSomething(arr[i]);
}
它因編譯錯誤而失敗:
Argument of type 'number | undefined' is not assignable to parameter of type 'number'.
Type 'undefined' is not assignable to type 'number'.
uj5u.com熱心網友回復:
noUncheckedIndexedAccess是主要有用的物件,并為陣列如果你正在尋找了指數可能會超過陣列的長度。
如果您可以絕對確定該值存在于指定的索引處 - 例如使用像這樣的死簡單代碼(假設您沒有改變函式內的陣列) - 那么只需在傳遞它之前斷言該值存在:
for (let i = arr.length - 1; i >= 0; --i) {
doSomething(arr[i]!);
}
另一種選擇是反轉陣列,然后對其進行迭代,這在計算上有點昂貴,但更容易一目了然。
arr.reverse().forEach(doSomething);
// no mutation:
[...arr].reverse().forEach(doSomething);
// no mutation:
for (const item of [...arr].reverse()) {
doSomething(item);
}
for在可行的情況下,最后三個是我更喜歡回圈的。
uj5u.com熱心網友回復:
為什么你不像其他人那樣做
arr.map(dosonething);
買如果你仍然想這樣做,因為你是添加一個如果
if (art[I]!==undefined){
dosonething(art[I]);
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/349962.html
