web-dev-qa-db-fra.com

TS2339: La propriété 'includes' n'existe pas sur le type 'chaîne'

J'ai vu cette erreur mentionnée en ce qui concerne les tableaux de chaînes mais pas les chaînes réelles. J'ai un fichier TypeScript avec la ligne

if (!bus.lineInfo.PublishedLineName.includes(input)) {

Cela me donne une erreur de

TS2339: Property 'includes' does not exist on type 'string'.

bus est une variable qui implémente l'interface bus:

interface bus {
    "lineInfo": {
        "PublishedLineName": string,
        "DestinationName": string, // The headsign of the bus
        "Color": string,
        "TextColor": boolean | string // false if this is "FFFFFF", otherwise it's the color
    },
    "warnings": boolean | busWarnings
    "marker"?: google.maps.Marker,
    "result"?: JQuery // The search result that appears in the sidebar
}

lineInfo.PublishedLineName Est déclaré en tant que string et String.prototype.includes()est une fonction selon MDN , alors pourquoi le compilateur TypeScript se plaint-il de la propriété manquante /méthode?

18
Michael Kolber

Vous devez ajouter es2016 ou es7 lib complierOptions dans tsconfig.json. TypeScript par défaut ne supporte pas certaines fonctions es6 polyfill

{
  "compilerOptions": {
    ...
    "lib": [
       "dom",
       "es7"
    ]
  }
}

Ou changez la cible de build en es2016 si vous ne souhaitez plus supporter ES5

{
  "compilerOptions": {
    ...
    "target" "es2016"
  }
}
29
hgiasac