ktr*_*yak 12 typescript es6-promise
以下代码在返回的类型方面是正确的,因为then始终返回promise数组.
Promise.resolve(['one', 'two'])
.then( arr =>
{
if( arr.indexOf('three') === -1 )
return Promise.reject( new Error('Where is three?') );
return Promise.resolve(arr);
})
.catch( err =>
{
console.log(err); // Error: where is three?
})
Run Code Online (Sandbox Code Playgroud)
TypeScript抛出错误:
类型参数'TResult'的类型参数不能从用法中推断出来.考虑明确指定类型参数.类型参数候选'void'不是有效的类型参数,因为它不是候选'string []'的超类型.
但实际上,then永远不会回归void.
我可以明确指定类型.then<Promise<any>>,但它更像是一种解决方法,而不是正确的解决方案.
怎么写这个吧?
bas*_*rat 11
你不应该回Promise.resolve和Promise.reject 内部承诺链.本resolve应通过简单的回报来驱动,并reject应通过明确的驱动throw new Error.
Promise.resolve(['one', 'two'])
.then( arr =>
{
if( arr.indexOf('three') === -1 )
throw new Error('Where is three?');
return arr;
})
.catch( err =>
{
console.log(err); // Error: where is three?
})
Run Code Online (Sandbox Code Playgroud)
有关承诺链的更多信息https://basarat.gitbooks.io/typescript/content/docs/promise.html
| 归档时间: |
|
| 查看次数: |
12125 次 |
| 最近记录: |