Javascript 如何从承诺中获取数字?

Javascript 如何从承诺中获取数字?,javascript,typescript,Javascript,Typescript,为什么打字稿上写着 let shouldbenNumber:编号类型“未知”不可分配给类型 “数字”。维图尔(2322) turnIntoNumber将始终获得诸如1,2,3,4,5,6…之类的数字字符串,因此我知道shouldbenNumber将始终是一个数字。如何说服typescript或开发这段代码?:-) 异步函数makeMagic(){ let shouldbenNumber:number=等待转为number(“2”); } 函数turnIntoNumber(get){ 返回新承诺(

为什么打字稿上写着

let shouldbenNumber:编号类型“未知”不可分配给类型 “数字”。维图尔(2322)

turnIntoNumber
将始终获得诸如1,2,3,4,5,6…之类的数字字符串,因此我知道
shouldbenNumber
将始终是一个数字。如何说服typescript或开发这段代码?:-)

异步函数makeMagic(){ let shouldbenNumber:number=等待转为number(“2”); } 函数turnIntoNumber(get){ 返回新承诺((解决、拒绝)=>{ let shouldbenNumber:number=number(get); 解决(应为数字); }); } 你能帮我把这个javascript转换成更好的打字脚本吗?
提前感谢。

您可以对
解析的类型进行注释

async function makeMagic() {
  let shouldbeNumber: number = await turnIntoNumber("2");
}
function turnIntoNumber(get) {
  return new Promise((resolve: (value: number) => void, reject) => {
    let shouldbeNumber : number =  Number(get);
    resolve(shouldbeNumber);
  });
}

注释函数的返回类型

function turnIntoNumber(get) : Promise<number> {
  return new Promise((resolve, reject) => {
    let shouldbeNumber : number =  Number(get);
    resolve(shouldbeNumber);
  });
}
函数turnIntoNumber(get):承诺{
返回新承诺((解决、拒绝)=>{
let shouldbenNumber:number=number(get);
解决(应为数字);
});
}

异步函数的返回类型将始终包装在promise中。因此,无论是JS还是TS,您都无法返回未包装在promise中的内容。您可以尝试以下方法

async function makeMagic(): Promise<number> {
    let num: number;
    num = await turnIntoNumber("2");
    console.log(num);
    return num;
}
function turnIntoNumber(get:string) :Promise<number> {
  return new Promise((resolve, reject) => {
    let shouldbeNumber : number =  Number(get);
    resolve(shouldbeNumber);
  });
}

makeMagic().then(data => {
    console.log(data);
})
异步函数makeMagic():Promise{ 设num:数字; num=等待转入编号(“2”); console.log(num); 返回num; } 函数turnIntoNumber(get:string):承诺{ 返回新承诺((解决、拒绝)=>{ let shouldbenNumber:number=number(get); 解决(应为数字); }); } makeMagic()。然后(数据=>{ 控制台日志(数据); })
StackBlitz

(resolve:(value:number)=>void,reject)
似乎正在工作,但我不知道“=>void”部分的作用。这是返回值。resolve函数不返回任何内容。这是一个准确的答案,但应该注意,当前的TypeScript并不总是以C#通常的方式强制类型。通常仍然可能获得与预期不匹配的输入和输出,不仅是在运行时,而且常常包括代码本身中的不匹配,从而在中大型代码库中造成严重破坏。同样,答案本身并不存在问题,但根据我的经验,有时在解决个别问题时,了解全局是很重要的。我试图打开链接,但它不起作用,请检查或更新链接。