我想知道为什么Promise<T>
不需要两个参数,如下所示:Promise<T1,T2>
。Promise的TypeScript参数<T>,Why not Promise <T1,T2>?
例如:
new Promise(function(resolve,reject){
...
err ? reject(err) : resolve(val);
});
=>我怎么能告诉承诺的约都犯错和 val的类型的消费者?
我期望T1
是Error
类型和T2
是val
的类型。
为什么不承诺带两个类型参数?因为它正式只有一个,我假设参数是传递给resolve()
的值的类型?是否只有一个参数,因为我们预计Error
类型总是被传递给reject()
?
在进一步的细节,我们可以通过一个字符串拒绝:
new Promise(function(resolve,reject){
let err = 'just a string, not an object';
let val = {foo:'bar'};
err ? reject(err) : resolve(val);
});
需要注意的是,我们可以要挟错误某种类型,就像这样:
return function(){
return Promise.resolve('whatever')
.catch(function(){
return Promise.reject('always a string');
});
}
,所以它不是真的如此,错误可能永远是any
的事情?似乎我们知道上述示例中的错误将是字符串...
拒绝有'型(原因:任意)=> void',所以你可以把它任何东西。 – toskv
我认为这是因为在Javascript中你可以抛出任何东西,很难预测错误类型是什么..但它只是一个预感。 –
另外,为什么一个API被构建是不是真的是什么东西将能够回答,这是有点太广泛和基于意见。 – toskv