我嘗試使用使用TypeScript v0.9的新TypeScript文件使用純JavaScript編寫的現有AMD。我已經把它分解成一個非常簡單的AMD來證明這個問題。在新的打字稿文件中使用現有的AMD js模塊(0.9)
首先,我現有的AMD(activityProperty.js):
define([],
function() {
var activityProperty = function (key, value) {
var self = this;
self.key = key;
self.value = value;
return self;
};
return activityProperty;
});
其次,我創建activityProperty.d.ts與現有AMD的接口definiton:
export interface IActivityProperty {
key: string;
value: string;
}
最後,我創建了一個全新的TypeScript類(PropertyBag.ts),我希望使用我以前的activityProperty AMD:
import PropertyModule = require("activityProperty");
class PropertyBag {
private properties: Array<PropertyModule.IActivityProperty>;
constructor() {
this.properties = new Array<PropertyModule.IActivityProperty>();
//this is where my problem is...
//this.properties.push(???new activityProperty()???);
}
}
我不能爲我的生活弄清楚如何使用舊的AMD定義來創建一個新的類實例activityProperty
。我錯過了一些微不足道或明顯的東西嗎?
感謝您的幫助!
感謝您的回答史蒂夫。不過,我只是把它作爲一個小規模的例子,因爲我們的AMD定義比較大,我正在尋找一種方法來以這種方式使用它們而不需要重寫。所以想象界面甚至不在那裏。有沒有辦法使用TypeScript中第一個'define'語句中定義的類? –
好的,這是大部分答案,但我必須添加新的'export = activityProperty;'才能讓類被使用它的新TypeScript類識別。感謝你和@ stephen-chung的幫助! –