How to resolve this TypeScript error: "Expected 0-1 arguments, but got 2"

How to resolve this TypeScript error: "Expected 0-1 arguments, but got 2"

我正在 JavaScript(不是 TypeScript)中编写 Node.js 代码,但使用 TypeScript 静态分析工具检查我的 JavaScript。

我有以下使用 stampit 库的 JavaScript 代码:

import stampit from 'stampit'

const Character = stampit({
  props: {
    name: null,
    health: 100
  },
  init({ name = this.name }) {
    this.name = name
  }
})

const Fighter = stampit(Character, { // inheriting
  props: {
    stamina: 100
  },
  init({ stamina = this.stamina }) {
    this.stamina = stamina;    
  },
  methods: {
    fight() {
      console.log(`${this.name} takes a mighty swing!`)
      this.stamina--
    }
  }
})

我已经安装了 DefinatelyType package for stampit

但是,我收到以下错误,它适用于整个 stampit(Character, {...}) 函数调用:

Expected 0-1 arguments, but got 2

知道如何解决这个错误吗?甚至只是使用 TypeScript 将其关闭?

更新: 这似乎是@types/stampit 中的一个错误。它可能可以毫无问题地与 TypeScript 一起使用,但在编写 JS 代码时会出现问题。可以通过将 stampit 声明更改为:

来解决此问题
declare function stampit(f1?: stampit.Stamp | Options, options?: Options): stampit.Stamp;

类型定义 are for stampit v3.0.x, whose most recent release was 3.0.6 two years ago,因此(假设您刚刚安装了 stampit v4.1.2)定义与代码和文档不同步。您的选择是:

  1. (强烈建议)使用 stampit 版本 v3.0.6 (npm i -S stampit@3.0.6)
  2. 为 stampit v4.1.2 编写更新的类型定义(并希望针对 DefinitelyTyped 存储库创建拉取请求)
  3. 如 vibhor1997a 所说,在任何出现错误的地方添加 //@ts-ignore
  4. 明确将库视为未类型化:const stampit: any = require("stampit");

#2 显然是最好的,因为它也有利于任何其他想要使用该库的人。如果您没有时间或不愿意这样做,我建议您不要使用 #3,因为它容易出错且乏味。剩下#4,它至少迫使你变得明确和警惕。