ts中能操作数组下标越界错误提示吗?

const arr = [1, 2, 3];
console.log(arr[5]); // 期待数组下标越界错误
阅读 2.9k
2 个回答

虽然数组不行,但是用元组是可以的

type Arr = [number,number,number]
const arr: Arr = [1,2,3]
console.log(arr[5]); // error

typescript 不管运行时,要检查只能你自己检查

比如用 Proxy

const SafeArray = arr => new Proxy(arr, {
    get: (_, k) => {
        k = + k
        if (Number.isInteger(k) && k >= 0 && k < arr.length) return arr[k]
        throw Error('越界')
    },
    set: (_, k, v) => {
        k = + k
        if (Number.isInteger(k) && k >= 0 && k < arr.length) arr[k] = v
        throw Error('越界')
    },
    // ...
})

Devtool

推荐问题