[英]Typescript: Specifying proper return type for resolve parameters in promises
昨天,我決定使用Typescript,並嘗試將一些基本的JavaScript Promise示例移植到Typescript Promise。 但是,在移植樣本的過程中,我遇到了一個仍然無法解決的問題。 試圖谷歌也沒有用。
場景:我確實有一個返回Promise
的函數,該Promise
在執行時解析為number
。 我還想在此樣本上測試一些then
場景。
請在下面找到代碼示例:
function test_promise(): Promise<number>{
return new Promise((resolve, reject) :number => {
let result:number = 10;
resolve(result);
}).then(result => { // first then
console.log("Result: " + (typeof result)); // Result: number
return result * 2; //
}).then(result => { // second then
return result * 2;
}).then(result => { // third then
return result * 2;
});
}
我還添加了兩個屏幕截圖,以提高清晰度。
屏幕截圖1:
屏幕截圖2
我目前尚不清楚幾件事:
typeof
結果是number
,而是在console.log
打印它時說它是number
。 有什么不同? number
,那么為什么它不允許我對此執行乘法運算。 為了使此示例正常工作,我需要在此處進行哪些更改?
希望你們能對此有所了解。 謝謝。
問候,
解決方案是通過在new Promise
之后直接添加<number>
來顯式指定實例化的第一個Promise
對象的值類型,如下所示:
/* Add <number> after new Promise */
return new Promise<number>((resolve, reject) => {
let result:number = 10;
resolve(result);
}).then(result => { // first then
console.log("Result: " + (typeof result)); // Result: number
return result * 2; //
}).then(result => { // second then
return result * 2;
}).then(result => { // third then
return result * 2;
});
這樣做會通知Typescript第一個Promise值類型,從而可以推斷出鏈中后續Promise的值類型。
這將反過來解決您的問題。 有關Typescript中泛型的更多信息,請參見此處 。 希望有幫助!
檢查以下行:
return new Promise((resolve, reject) :number => {
: number
表示函數(或意義不大的構造函數)正在返回數字。 這不是真的! new Promise
顯然會返回Promise,而您不必指定它。
您想說的也許是Promise處理的類型。 您可以使用角括號來做到這一點:
return new Promise<number>((resolve, reject) => {
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.