lib.es2015.promise.d.ts(33, 34):未提供“价值”的参数

Posted

技术标签:

【中文标题】lib.es2015.promise.d.ts(33, 34):未提供“价值”的参数【英文标题】:lib.es2015.promise.d.ts(33, 34): An argument for 'value' was not provided 【发布时间】:2021-04-22 02:27:11 【问题描述】:
                                  22:16:16:25

TS2556:应有 1 个参数,但有 0 个或更多。

           config.promise.then((...args: any[]) => 
                if (this._isCancelled) return;
                this._isCompleted = true;
                resolve(...args);
                        ^^^^^^^
            , (error)=>
                if (this._isCancelled) return;
                this._isCompleted = false;
                reject(error);
            );

tsconfig.json


  "compilerOptions": 
    "target": "ESNext",
    "module": "ESNext",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "lib": [
      "ESNext",
      "ESNext.AsyncIterable",
      "DOM"
    ],
    "esModuleInterop": true,
    "paths": 
      "~/*": [
        "./*"
      ],
      "@/*": [
        "./*"
      ]
    ,
    "types": [
      "@types/node",
      "@nuxtjs/axios",
      "@nuxt/types",
      "types-lib/*"
    ]
  ,
  "exclude": [
    "node_modules"
  ]

代码运行得更好,但文件中出现错误

resolve(...args) 更改为 resolve(args)

我收到此错误:

“any[]”类型的参数不能分配给“T |”类型的参数。许诺”。 类型 'any[]' 不能分配给类型 'T'。 'T' 可以用与 'any[]' 无关的任意类型实例化

还将目标更改为 es6、es5、es2016、es2015 等无效

【问题讨论】:

【参考方案1】:

我解决了这个问题:

`resolve(null);`

代替:

'resolve();`

【讨论】:

我的代码是resolve(...args); 不是'resolve();` 正如@Terry 回复的那样,使用:resolve(args); 而不是:resolve(...args);【参考方案2】:

resolve() 只接受一个参数。通过执行resolve(...args),您将任意长度的数组传播到任意数量的位置参数中,这与接口不兼容。

只需直接传递args,这样所有参数都将在一个数组中传递,即resolve(args)

【讨论】:

即使更改后,我也收到错误【参考方案3】:

抱歉,迟到了

我解决了这个问题

改变了这个:

config.promise.then((...args: any[]) => 
                if (this._isCancelled) return;
                this._isCompleted = true;
                resolve(...args);
                        ^^^^^^^
            , (error)=>
                if (this._isCancelled) return;
                this._isCompleted = false;
                reject(error);
            );

到这里:

config.promise.then((args: any) => 
                if (this._isCancelled) return;
                this._isCompleted = true;
                resolve(args);
                        
            , (error)=>
                if (this._isCancelled) return;
                this._isCompleted = false;
                reject(error);
            );

【讨论】:

以上是关于lib.es2015.promise.d.ts(33, 34):未提供“价值”的参数的主要内容,如果未能解决你的问题,请参考以下文章

角度问题 - 无法获取 /

LayaAir之Promise

开始在 tsconfig 中使用 'strict'

共享 tsconfig.json 和相对路径

TS2300: Duplicate identifier问题的解决

错误 TS2318:找不到全局类型“对象”