类型'string'上不存在属性'trimLeft'。库:[“ dom”,“ es2018”]

时间:2019-01-30 10:24:27

标签: typescript tsc ecmascript-next

运行以下代码时出现此错误

let foo = '  foo  '
console.log(foo.trimLeft())
//foo.trimStart() works neither

我知道互联网上的大多数解决方案都说,我必须修复tsconfig.json才能包含es20。

有趣的是,我可以使用es2018之类的Promise.prototype.finally和rest spread等。VSCode也会自动为我完成trimStart(),这很奇怪,因为项目和编辑器应使用相同的{ {1}}。 但是这段特定的代码无法编译。

这是我的tsconfig.json

tsconfig.json

我正在monorepo angular文件夹中运行它(如您在上面看到的)。 也许有一个问题,我不知道。

3 个答案:

答案 0 :(得分:2)

将打字稿库更新为“打字稿”:“〜3.6.2”。在tsconfig.json lib的数组中包含“ es2019”。它将起作用。

"target": "es2015",
"typeRoots": [
  "node_modules/@types"
],
"lib": [
  "es2018",
  "es2019",
  "dom"
]

答案 1 :(得分:1)

包括库"es2019.string"。如果没有此类库,请更新您的Typescript副本。当问这个问题时,它是相当新的并且不存在。

答案 2 :(得分:0)

我认为es2018无法正常工作。尝试将其更改为“ es2016”

{
  "compileOnSave": false,
  "compilerOptions": {
    "outDir": "./dist/out-tsc",
    "baseUrl": "./",
    "sourceMap": true,
    "declaration": false,
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "target": "es5",
    "typeRoots": ["node_modules/@types"],
    "lib": ["es2016", "dom"],
    "plugins": [
      {
        "name": "tslint-language-service",
        "configFile": "./tslint.json"
      }
    ],
    "paths": {
      "foo": ["projects/foo/src/public_api.ts"],
      "bar": ["projects/bar/src/public_api.ts"],
      "baz": ["dist/baz"]
    }
  }
}