我想知道爲什麼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