2012-12-06 36 views
9

Tôi có một TypeScript (ts) đơn giản cần một hàm từ tệp JavaScript. Làm thế nào tôi có thể nhập tập tin js đó vào tập tin ts? Tôi có phải tạo tệp ts cho tệp js đó để có thể sử dụng tệp đó trong tệp ts của tôi không?Tải tệp js vào tệp bản ghi

Trả lời

22

Cách đơn giản nhất là chỉ cần declare chức năng bạn đang sử dụng:

File1.js

function greet() { return "Hello!"; } 

File2.ts

declare function greet(): string; 

/* ... later ... */ 
var hi = greet(); 

Nếu kịch bản của bạn là com hơn plex (tức là nhiều tệp tham chiếu File1.js hoặc có nhiều hàm trong File1.js sẽ lộn xộn lên File2.ts), bạn có thể tạo tệp File1.d.ts và tham chiếu từ File2.ts:

File1. d.ts

function greet(): string; 

File2.ts

/// <reference path="File1.d.ts" /> 

/* ... later ... */ 
var hi = greet(); 
+0

Hi Ryan, cảm ơn bạn đã làm việc này! Tuy nhiên, một tệp tôi sử dụng có các phương thức được thêm vào thư viện Math. Vì vậy, tệp Math.uuid.js có ba phương thức trong đó; Math.uuid() trả về chuỗi, và hai thứ khác ... TS phàn nàn với hàm "khai báo Math.uuid(): string;" (chắc chắn). Làm thế nào tôi có thể mang lại những phương pháp này? Cảm ơn! –

+2

Tìm thấy nó! Tôi đã tuyên bố giao diện này ... Giao diện Math { uuid(): string; } và tất cả đều tốt. –

+1

Có cách nào để tự động tạo tệp * .d.ts từ tệp .js không? Cảm ơn - dave –

2

Chỉ cần cho các tài liệu lưu trữ, nếu bạn thêm một ref /// cho một tập tin JavaScript bên trong tập tin TS của bạn, trình biên dịch sẽ cố gắng xác nhận tất cả mã trong các tệp JS và ném một danh sách lỗi lớn. Hãy thử nó với jQuery hoặc một cái gì đó như thế và bạn sẽ thấy những gì tôi có ý nghĩa.

+0

Yup, tôi đã thấy điều đó. Tôi đặt khai báo var $ và không bao gồm ref trong các dự án không có jquery tệp d.ts. –

+0

Đó là cách nhanh nhất để thêm hỗ trợ cho bất kỳ loại nào mà bạn không có tệp .d.ts cho. Những điều tốt đẹp về các tập tin định nghĩa là bạn nhận được Intellisense. –

+0

https://github.com/borisyankov/DefinitelyTyped –

Các vấn đề liên quan