wu_trulli 2023-03-12 21:39 采纳率: 62.5%
浏览 138
已结题

ts转js报错:'Promise' only refers to a type, but is being used as a value here.

ts文件转js时报错如下:
ase/src/lib/developer.ts:30:20 - error TS2585: 'Promise' only refers to a type, but is being used as a value here. Do you need to change your target library? Try changing the 'lib' compiler option to es2015 or later.
相关代码段如下:

code(): Promise<string> {
        return new Promise((resolve,reject)=>{
            if(this.name == 'Nicole' && this.language == 'nodejs'){
                resolve('console.log("Hello, Nicole!")');
            }
            else if(this.name == 'John' && this.language == 'java'){
                resolve('System.out.println("Hello, John!")');
            }
            else if(this.name == 'Pete' && this.language == 'python'){
                resolve('print("Hello, Pete!")');
            }else{
                reject(new Error('Unsupported language:'+this.language));
            }
        });
    }

还报错
Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try npm i --save-dev @types/jest or npm i --save-dev @types/mocha.
可是@types/mocha是存在的,为什么找不到呢?

  • 写回答

7条回答 默认 最新

  • 「已注销」 2023-03-12 21:45
    关注

    参考GPT和自己的思路:第一个错误提示是 TypeScript 编译器发出的,它指出 Promise 只被用作类型,但在代码中作为值使用。这个错误可能是因为编译目标库版本不兼容,建议将编译目标库版本改为 es2015 或更高版本。

    在 tsconfig.json 文件中添加以下配置可以解决该问题:

    {
      "compilerOptions": {
        "target": "es2015",
        // ...
      },
      // ...
    }
    
    
    

    至于第二个错误提示,它可能是由于测试运行器的类型定义文件未正确安装导致的。尝试重新安装类型定义文件,或者确保测试运行器的类型定义文件已经被正确引用。

    如果您使用的是 Jest 测试运行器,则运行以下命令安装类型定义文件:

    npm i --save-dev @types/jest
    
    
    

    如果您使用的是 Mocha 测试运行器,则运行以下命令安装类型定义文件:

    npm i --save-dev @types/mocha
    
    
    

    请确保您的开发环境中安装了这些依赖项,并在代码中正确引用它们。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 3月13日
  • 创建了问题 3月12日