2017-09-15 11 views
0

私はasync/awaitの背後にある考え方は、約束を使うのにもっとかわいい方法だと理解していますが、タイプ 'number'に '{}'を割り当てることはできません

async function a(): Promise <number> { 
    return 5; 
} 

これは微細で、結果5

async function a(): Promise <number> { 
    return await new Promise(resolve => { 
    resolve(5); 
    }); 
} 

エラーTS2322で解決される約束を返す:タイプ '{}' '番号' タイプに割り当てません。
プロパティ 'includes'がタイプ '{}'にありません。

私が理解しているところでは、結果を解決して返すことを約束します。この場合、結果は5であり、上記の例として機能するはずです。

+0

せずに、あなたのコードで動作することができると思う 'タイプは「{}」型に代入ではありません'number'ははるかに適切なタイトルのようだ。 – jdgregson

+0

なぜasync/awaitで約束をしていますか? –

+0

@HarshPatel 'a()'の中でコールバックを扱う関数を持っているなら、これをどうやって書くのですか? –

答えて

4

デフォルトではnew Promise()new Promise<{}>に相当します。

内部プロミスは数値ではなくオブジェクトを返します。コンパイラーは、タイプ番号のPromiseであることを確認する必要があります。

await new Promise<number>

async function a(): Promise<number> { 
    return await new Promise<number>(resolve => { 
    resolve(5); 
    }); 
} 

await new Promiseを交換し、また、あなたのコードをチェックし、私はあなたが途中約束

async function a(): Promise<number> { 
     return await 5; 
} 
+0

簡略化された例でしたが、明らかに中間の約束が必要です:D –

関連する問題