TS2339: Property 'includes' does not exist on type 'number[]'

rossroma
  • 188
问题代码
  private _filterNumbers(args: number[]) {
    return this._integerLists.filter(num => !args.includes(num));
  }
报错

image.png

typescript配置
{
    "compilerOptions": { //编译选项
        "target": "es2017", //配置编译目标代码的版本标准
        "module": "commonjs", //配置编译目标使用的模块化标准
        "lib": ["es2017", "dom"],
        "outDir": "./dist",
        "strictNullChecks": true,
        "removeComments": true,
        "noImplicitUseStrict": true,
        "esModuleInterop": true,
        "noEmitOnError": true,
        "moduleResolution": "node",
        "noImplicitAny": true,
        "noImplicitThis": true,
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "declaration": true,
        "sourceMap": true,
        "typeRoots": ["./node_modules/@types", "./src/types"]
    },
    "include": ["index.ts"]
}

但是编译后的代码可以正常执行

回复
阅读 2.9k
1 个回答
✓ 已被采纳

当 tsc 后面跟文件的时候,不会 使用 tsconfig.json。 参见tsconfig.json

When input files are specified on the command line, tsconfig.json files are ignored.

要使用 tsconfig.json ,就只需要 tsc ,不要在后面跟文件名。

而,target 的默认值是 ES3 ,ES3 没有 includes,所以会报错。

===========================

tsc 貌似会将很多它认为的“错误”原样输出。当你在运行结果 js 的时候,实际用的并不是 ES3 ,所以 includes 语句在运行时并不会报错。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏