次のコードに問題があります。Typescript - TypeError myclass.myFunctionは関数ではありません
基本的に何をすべきか。与えられたJSONファイルをロードして解析する必要があります。また、RequestListenderにはID
とHello
という文字列がToString()
メソッドによって返され、Product.tsに表示されます。 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