Math.sign() 在 Math 上不存在,尽管 lib 目标设置为 es2016

问题描述 投票:0回答:1

我正在将 JS 代码库迁移到 TS。它使用方法

Math.sign()
。然而,编译器给出了这个错误-

Property 'sign' does not exist on type 'Math'. Do you need to change your target library? Try changing the 'lib' compiler option to 'es2015' or later.

它不应该给出,因为我的目标版本是“es2016”,并且这是在“es2015”中添加的

这是我当前的 tsconfig 文件,所以我不明白为什么会发生这种情况以及如何解决此问题-

{
  "compilerOptions": {

    "target": "es2016",                                  
    "lib": ["es2016", "dom"],                                        
    // other things                              
  }
}
javascript typescript tsconfig
1个回答
0
投票

当您向打字稿编译器传递输入文件时,它会忽略

tsconfig.json
并生成一个新的临时配置文件,其中包含您传递的参数。您可以通过运行来检查

$ npx tsc index.ts --showConfig
{
    "compilerOptions": {},
    "files": [
        "./index.ts"
    ]
}

要使用配置文件,您应该将输入文件放置在

files
属性中,如下所示

{
  "compilerOptions": {

    "target": "es2016",                                  
    "lib": ["es2016", "dom"],                                        
    // other things                              
  },
  "files": ["./index.ts"]
}

然后像这样运行

npx tsc

或者可选择提供您的项目的路径

npx tsc --project path/to/folder/containing/tsconfig

如果您好奇,也可以在避免像这样的配置文件的同时执行此操作:

npx tsc index.ts --target es2016 --lib es2016,dom

您确实可以再次使用

--showConfig
验证这是否有效

$ npx tsc index.ts --target es2016 --lib es2016,dom --showConfig
{
    "compilerOptions": {
        "target": "es2016",
        "lib": [
            "es7",
            "dom"
        ],
        "module": "es6",
        "moduleResolution": "classic"
    },
    "files": [
        "./index.ts"
    ]
}
© www.soinside.com 2019 - 2024. All rights reserved.