2015-12-23 1 views
5

Ich bekomme diesen Fehler auf dem Code-Block unten.Fehler TS2339: Eigenschaft 'endsWith' existiert nicht für den Typ 'string'

error TS2339: Property 'endsWith' does not exist on type 'string'

let myList = angular.element(elem).attr("href").split("/"); 
let last = _.last<string>(myList); 
if (last.endsWith("something")) { 
    return last; 
} 

Ich habe entdeckt, auch diese Verbindung, die zeigt, dass eine Funktion dort endsWith(...) ist.

http://definitelytyped.org/docs/typescript-services--typescriptServices/classes/typescript.stringutilities.html

Habe ich etwas .d.ts Datei oder was verpasst?

Antwort

12

endsWith ist ein ES6 function so müssen Sie ES6 in Ihren Typoskript Compiler-Einstellungen zielen oder Sie können eine Schnittstelle für sie hinzufügen:

interface String {  
    endsWith(searchString: string, endPosition?: number): boolean; 
}; 

[Playground]

+0

ES6 Funktionsdefinitionen sind hier https://github.com/Microsoft/TypeScript/blob/master/lib/lib.es6.d.ts für die Zukunft liegt. –

+0

Am Ende habe ich etwas anderes mit 'indexOf' ersetzt, da ich Probleme mit dem Linter hatte. – ipinak

0

hier: gebraucht I VS-Code als eine IDE
Ausgabe war:

let fName:String = "Yokey"; 
console.log(fName.anchor("url")); 

bewirkt:

PS C:\MYahya\OS_DEV\typescript_lrn\1> tsc main.ts 
main.ts(2,19): error TS2339: Property 'anchor' does not exist on type 'String'. 

Lösung:
ich folgende tsconfig.json Datei im Projekt enthalten sollte:

{ 
    "compilerOptions": { 
     "module": "commonjs", 
     "target": "es6", 
     "noImplicitAny": true, 
     "strictNullChecks": true, 
     "noImplicitReturns": true, 
     "noImplicitThis": true, 
     "noUnusedLocals": true, 
     "noUnusedParameters": true, 
     "baseUrl": "../types", 
     "typeRoots": [ 
      "../types" 
     ], 
     "types": [], 
     "forceConsistentCasingInFileNames": true, 
    } 
} 

Dann habe ich tsc (ohne Dateinamen) so würde der transpiler die tsconfig.json verwenden, um alle gehosteten Typskriptdateien zu transkompilieren in den Verzeichnissen zu js Dateien.

0

Während des Kompilierens Ihres Typoskripts zeigen Sie bitte das Ziel auf ES6.

tsc --target ES6 "filename"