我正遇到以下代碼的問題。Typescript - TypeError myclass.myFunction不是函數
它基本上應該做什麼。它應該加載並解析給定的JSON文件。並且在RequestListender中,它應該顯示ID
和由ToString()
方法在Product.ts返回的字符串Hello
。如果tProduct.Id
顯示正確,則tProduct.ToString()
方法將失敗並顯示以下錯誤。
非常感謝。
錯誤消息:
TypeError: tProduct.ToString is not a function.
(In 'tProduct.ToString()', 'tProduct.ToString' is undefined)
文件:Test.ts
var currentProduct = null as pvis.Product;
function runTest(path) {
var request = new XMLHttpRequest();
request.onload = loadRequestListener;
request.open("get", path, true);
request.send();
}
function loadRequestListener() {
var tProduct : pvis.Product = JSON.parse(this.responseText);
if (tProduct.Id) {
currentProduct = tProduct;
alert('loaded with Id: ' + tProduct.Id);
alert('loaded with Content: ' + tProduct.ToString());
}
else {
alert('product failed to load');
}
}
文件Product.ts
module pvis {
export class Product {
Id: string;
ToString():string {
return 'Hello';
}
}
}
HTML部分:
<body onload="runTest('assets/products/json/A379N.json')">
編譯的Javascript:
var pvis;
(function (pvis) {
var Product = (function() {
function Product() {
}
Product.prototype.ToString = function() {
return 'Hello';
};
return Product;
})();
pvis.Product = Product;
})(pvis || (pvis = {}));
var currentProduct = null;
function runTest(path) {
var request = new XMLHttpRequest();
request.onload = loadRequestListener;
request.open("get", path, true);
request.send();
}
function loadRequestListener() {
var tProduct = JSON.parse(this.responseText);
if (tProduct.Id) {
currentProduct = tProduct;
alert('loaded with Id: ' + tProduct.Id);
alert('loaded with Content: ' + tProduct.ToString());
}
else {
alert('product failed to load');
}
}
的tsconfig.json(我不知道這是否是相關的):
{
"compilerOptions": {
"target": "ES5",
"removeComments": true,
"preserveConstEnums": true,
"out": "js/main.js",
"sourceMap": true
},
"files": [
"src/Test.ts"
]
}
界面方法是我的第一步。幾乎像你發佈它。我剛剛從樣本中移除它以縮短它。 – FrW
對不起...我在這裏很新(按Enter鍵),所以這裏是完整的答案: 界面方法是我的第一個要求。幾乎像你發佈它。我剛剛從樣本中刪除了它,以便縮短它的時間,因爲界面不是問題的一部分。 正如你和@ Dustin-Hodges所說的那樣,問題出在JSON.parse上,並且不會創建實例。我正在假設。 **感謝您的支持**並給我正確的方向。 – FrW
沒問題,我更新了我的答案,修復了我的代碼中的一些錯誤,並提供了一個運行示例。樂意效勞! – Nypan