2017-09-15 122 views
0

所以我明白async/await背后的想法只是使用promises的一种更漂亮的方式,但显然我没有正确理解它。类型'{}'无法指定为'number'类型

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

这是罚款,返回与结果5

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

错误TS2322解决一个承诺:输入 '{}' 是不能分配给输入 '号码'。
类型'{}'中缺少属性'包括'。

据我了解,等待将等待解决,并返回结果,在这种情况下是5,并应当在上面的例子中工作的承诺?

+0

'类型“{}”是不能分配给类型'数字'似乎是一个更合适的标题。 – jdgregson

+0

你为什么使用异步/等待承诺? –

+0

@HarshPatel如果你有一个可以在'a()'中使用回调函数的函数,你会怎么写呢? –

回答

4

默认情况下,new Promise()相当于new Promise<{}>

你内在的承诺不会返回一个数字,而是一个对象。您需要确保编译器确认它是带有类型编号的Promise。

更换await new Promiseawait new Promise<number>

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

,并检查你的代码还,我想你可以用你的代码工作,而中间无极

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

这是一个简单的例子,显然我需要中间的承诺:D –

相关问题