Tôi đang gặp sự cố với mã sau.Typescript - TypeError myclass.myFunction không phải là chức năng
Điều cơ bản nên làm. Nó sẽ tải và phân tích cú pháp một tệp JSON đã cho. Và trong RequestListender, nó sẽ hiển thị ID
và chuỗi Hello
được trả về theo phương pháp ToString()
trong Product.ts. Trường hợp tProduct.Id
được hiển thị chính xác, phương pháp tProduct.ToString()
không thành công với lỗi được nêu bên dưới.
Cảm ơn rất nhiều trước.
Thông báo lỗi:
TypeError: tProduct.ToString is not a function.
(In 'tProduct.ToString()', 'tProduct.ToString' is undefined)
File: 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 file
module pvis {
export class Product {
Id: string;
ToString():string {
return 'Hello';
}
}
}
Phần HTML:
<body onload="runTest('assets/products/json/A379N.json')">
Các biên soạn 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');
}
}
Các tsconfig.json (Tôi không chắc chắn nếu nó là có liên quan):
{
"compilerOptions": {
"target": "ES5",
"removeComments": true,
"preserveConstEnums": true,
"out": "js/main.js",
"sourceMap": true
},
"files": [
"src/Test.ts"
]
}
Cách tiếp cận giao diện là bước đầu tiên của tôi. Hầu như bạn đã đăng nó. Tôi vừa lấy nó ra khỏi mẫu để giữ nó ngắn hơn. – FrW
xin lỗi ... Tôi khá mới ở đây (nhấn nút Enter) vì vậy đây là câu trả lời hoàn chỉnh: Cách tiếp cận giao diện là bước đầu tiên của tôi. Hầu như bạn đã đăng nó. Tôi vừa xóa nó khỏi mẫu để giữ nó ngắn hơn vì giao diện không phải là một phần của vấn đề. Như bạn và @ Dustin-Hodges đã nói, vấn đề là với JSON.parse và điều đó không tạo ra một cá thể. Mà tôi đã giả định. ** Cảm ơn bạn đã hỗ trợ ** và cho tôi hướng đi đúng. – FrW
Không vấn đề gì, tôi đã cập nhật câu trả lời của mình để sửa một số lỗi trong mã của mình và cung cấp ví dụ đang chạy. Vui mừng được giúp đỡ! – Nypan