如何在TypeScript中为数组创建代理?

siotufzp  于 2022-11-18  发布在  TypeScript
关注(0)|答案(1)|浏览(113)

我尝试使用代理来添加逻辑,每当我的数组中的值被设置为一个新值。然而,TypeScript抱怨,因为它不喜欢数组被索引为非数字的东西。

const nums = [1, 2, 3, 4, 5];

const handler: ProxyHandler<number[]> = {
  set(target: number[], property: string | symbol, newValue: any) {
    target[property] = newValue;
    return true;
  },
};

const proxy = new Proxy(nums, handler);

在带有target[property] = newValue;的行上,我得到错误Element implicitly has an 'any' type because index expression is not of type 'number'.ts(7015)
有什么好办法让TypeScript高兴吗?

b4wnujal

b4wnujal1#

你用string来索引数组吗?不,你通常用number来索引数组,这是TS告诉你的。

const nums = [1, 2, 3, 4, 5];

const handler: ProxyHandler<number[]> = {
  set(target: number[], property: string | symbol | number, newValue: any) {
    if (typeof property !== 'number') throw new Error('You can only index array with `number`!')
    target[property] = newValue;
    return true;
  },
};

const proxy = new Proxy(nums, handler);

Playground链接

相关问题