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):未提供“价值”的参数的主要内容,如果未能解决你的问题,请参考以下文章