Nếu tôi có điều này ts mô-đun:nguyên cảo AMD thực hiện xấu với Javascript/RequireJS
export function say(){
console.log("said");
}
và tôi biên dịch nó với các tùy chọn amd tôi có thể sử dụng nó khá dễ dàng từ một khách hàng ts:
import foo = module("tsmodule")
foo.say();
export var x = 123;
Tuy nhiên nếu tôi có javascript tương đương với các mô-đun ts:
define(["require", "exports"], function(require, exports) {
function say() {
console.log("said");
}
exports.say = say;
})
không có cách nào để sử dụng nó một cách dễ dàng. Giải pháp đơn giản nhất có thể:
// of course you can use .d.ts for requirejs but that is beside the point
declare var require:any;
// will fail with error module has not been loaded yet for context
// http://requirejs.org/docs/errors.html#notloaded
var useme = require("jsmodule")
useme.say();
export var x = 123;
import foo = module("tsmodule")
foo.say();
không thành công do lỗi http://requirejs.org/docs/errors.html#notloaded. Vì "jsmodule" không được chuyển đến cuộc gọi xác định trong bản ghi đã tạo.
Hai cách giải quyết Tôi có
- không sử dụng nhập khẩu/xuất khẩu (tính năng ngôn ngữ bị mất)
- sử dụng yêu cầu ([]) (vẫn có thể không xuất khẩu một cái gì đó mà phụ thuộc vào yêu cầu ([ ]) gọi)
có giới hạn: https://github.com/basarat/typescript-requirejs. Có cách nào khác không? Nếu không bạn có thể bỏ phiếu ở đây: https://typescript.codeplex.com/workitem/948 :)
rõ ràng một tính năng không có giấy tờ, và không làm việc với phiên bản tsc của tôi 0.9.0 alpha. Hãy để tôi gỡ cài đặt/cài đặt phiên bản 0.8 – basarat
Aww shoot, họ đã xóa mục này trong 0.9 ?! Tôi đang sử dụng 0.8.1.1. – thomaux
Hoạt động ở 0.8.3. Nhưng không phải trong 0.9.0alpha – basarat