首页 > 解决方案 > Object.defineProperty(Array.prototype .. TypeScript 中的问题

问题描述

在一些旧的 QA 中,我发现了一些代码,例如

如何在打字稿中扩展数组

扩展原生 JavaScript 数组

我正在研究它在 TypeScript 下的行为。

interface Array<T> {
  "foo": Function;
  ["foo"]: Function;
}

Object.defineProperty(Array.prototype, "foo", {
  value: function <T>(this, R: T) {
    return (console.log(R));
  }
});

[].foo("test");   // test
[]["foo"]("test");  //test

基本上,代码有效, TypeScript Playground

但是,由于某种原因,在 VSCode 中,TypeScript 会产生错误

在此处输入图像描述

在此处输入图像描述

至少我尝试输入 Array 属性。

"suppressImplicitAnyIndexErrors": true在 tsconfig.json 中肯定会抑制这些错误,但我想知道如何在没有此标志的情况下使其工作。

任何的想法?谢谢。

标签: typescript

解决方案


非常感谢您的灵感,尤其是 @jcalz。

事情是这样的...

在此处输入图像描述

在此处输入图像描述

interface Array<T> {
  "foo": Function;
  ["foo"]: Function;
}

一定是TypeScript代码的顶层,我真的不知道。

还是谢谢大家!!


推荐阅读