Typescript 类型脚本编译器可以';无法从承诺解析调用推断类型

Typescript 类型脚本编译器可以';无法从承诺解析调用推断类型,typescript,Typescript,使用以下代码段时,编译器无法识别item1的类型,它将分配为未知(请参阅将鼠标悬停在 我错过什么了吗 为什么typescript编译器不能推断该类型将是字符串 const getItem=()=> 新承诺((决议)=>{ 返回解析(“标题”); }); (异步函数(){ const item1=等待getItem(); const item2=等待getItem(); })(); 问题在于无法从传递给resolve方法的类型推断出承诺的类型。resolve方法从传递给承诺构造函数的泛型类型获取其

使用以下代码段时,编译器无法识别
item1
的类型,它将分配为未知(请参阅将鼠标悬停在

  • 我错过什么了吗
  • 为什么typescript编译器不能推断该类型将是字符串
  • const getItem=()=>
    新承诺((决议)=>{
    返回解析(“标题”);
    });
    (异步函数(){
    const item1=等待getItem();
    const item2=等待getItem();
    })();
    
    问题在于无法从传递给resolve方法的类型推断出承诺的类型。resolve方法从传递给承诺构造函数的泛型类型获取其类型,而不是相反。在这种情况下,您不需要使用带有resolve的
    return

    您可以通过以下两种方式之一解决此问题

  • 您应该将
    string
    作为泛型类型参数传递。使用
    Promise((resolve)=>{…
    ,这将告诉typescript您希望字符串传递给
    resolve
    函数。如果您尝试用其他方法调用
    resolve
    ,则会看到类型错误
  • 如果您实际上没有等待任何内容,只想将字符串包装在承诺中,则可以使用类似于
    Promise.resolve('a title');
    的构造。这样,可以推断泛型类型参数

  • 问题是无法从传递给resolve方法的类型推断承诺的类型。resolve方法从传递给承诺构造函数的泛型类型获取其类型,而不是相反。在这种情况下,您不需要使用带有resolve的
    return

    您可以通过以下两种方式之一解决此问题

  • 您应该将
    string
    作为泛型类型参数传递。使用
    Promise((resolve)=>{…
    ,这将告诉typescript您希望字符串传递给
    resolve
    函数。如果您尝试用其他方法调用
    resolve
    ,则会看到类型错误
  • 如果您实际上没有等待任何内容,只想将字符串包装在承诺中,则可以使用类似于
    Promise.resolve('a title');
    的构造。这样,可以推断泛型类型参数