4
votes

La propriété 'trimLeft' n'existe pas sur le type 'string'. Lib: ["dom", "es2018"]

J'obtiens cette erreur lors de l'exécution du code suivant

{
  "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": ["es2018", "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"]
    }
  }
}

Je sais que la plupart des solutions sur Internet disent que je dois corriger mon code tsconfig.json > pour inclure es20 peu importe.

Ce qui est drôle, c'est que je peux utiliser des trucs es2018 comme Promise.prototype.finally et rest spread etc. VSCode complète également automatiquement trimStart () pour moi ce qui est étrange, car le projet et l'éditeur doivent utiliser le même tsconfig.json . Mais ce morceau de code ne se compile pas.

Voici mon tsconfig.json

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

Je l'exécute dans un dossier angulaire monorepo (comme vous peut voir ci-dessus). Il y a peut-être un problème avec ça, je ne sais pas.


3 commentaires

est-ce une erreur de compilation ou une erreur d'exécution?


Erreur de compilation. Je peux parfaitement l'exécuter sur la console du navigateur


Intéressant, car quand j'ai obtenu la "propriété 'trimRight' n'existe pas sur le type 'string'." L'erreur d'ajout de es2018 au tableau lib était suffisante pour résoudre mon problème.


3 Réponses :


0
votes

Je ne pense pas que es2018 va fonctionner. Essayez de le remplacer par "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"]
    }
  }
}


0 commentaires

8
votes

Incluez la bibliothèque "es2019 .string " . Mettez à jour votre copie de Typescript si une telle bibliothèque n'existe pas. C'est plutôt nouveau et n'existait pas lorsque cette question a été posée.


0 commentaires

6
votes

Mettez à jour la bibliothèque dactylographiée en "typescript": "~ 3.6.2". Incluez "es2019" dans le tableau de la lib tsconfig.json. Cela fonctionnera.

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


1 commentaires

Intéressant, car pour moi, l'ajout de es2018 au tableau lib a fait le travail.