Javascript 如何从承诺中获取数字?
为什么打字稿上写着 let shouldbenNumber:编号类型“未知”不可分配给类型 “数字”。维图尔(2322)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){ 返回新承诺(
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#通常的方式强制类型。通常仍然可能获得与预期不匹配的输入和输出,不仅是在运行时,而且常常包括代码本身中的不匹配,从而在中大型代码库中造成严重破坏。同样,答案本身并不存在问题,但根据我的经验,有时在解决个别问题时,了解全局是很重要的。我试图打开链接,但它不起作用,请检查或更新链接。