2015-12-23 26 views
5

Tôi nhận được lỗi này trên khối mã bên dưới.lỗi TS2339: Thuộc tính 'endsWith' không tồn tại trên loại '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; 
} 

Tôi cũng đã phát hiện ra liên kết này cho thấy rằng có một chức năng endsWith(...).

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

Tôi có bỏ lỡ một số .d.ts tập tin hoặc những gì?

Trả lời

12

endsWith là một ES6 function vì vậy bạn cần phải nhắm mục tiêu ES6 trong cài đặt trình biên dịch nguyên cảo của bạn hoặc bạn có thể thêm một giao diện cho nó:

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

[Playground]

+0

Định nghĩa hàm ES6 được đặt tại đây https://github.com/Microsoft/TypeScript/blob/master/lib/lib.es6.d.ts để tham khảo trong tương lai. –

+0

Cuối cùng, tôi thay thế bằng một cái gì đó khác bằng cách sử dụng 'indexOf', vì tôi đã có vấn đề với linter. – ipinak

0

đây: Tôi sử dụng VS mã như một IDE
Sự cố là:

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

sẽ cho kết quả:

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'. 

Giải pháp:
tôi nên bao gồm các tsconfig.json tập tin sau đây trong dự án:

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

Sau đó, tôi sử dụng tsc (không có tên tập tin) do đó, trình thu thập thông tin sẽ sử dụng tsconfig.json để chuyển đổi tất cả các tệp tập lệnh kiểu được lưu trữ trong các thư mục đến js tệp.

0

Khi biên dịch mã bản mẫu của bạn, vui lòng trỏ mục tiêu đến ES6.

tsc --target ES6 "filename" 
Các vấn đề liên quan