1
我有一组类有一个相当简单的字段集:打字稿JSON反序列化接口失踪方法
interface IQuiz {
name: string;
questions: Question[];
score(): number;
}
export class Quiz implements IQuiz {
name: string;
questions: Question[];
score(): number {
var theScore: number = 0;
this.questions.forEach(question => (theScore += question.value));
return theScore;
}
}
interface IQuestion {
text: string;
value: number;
}
export class Question {
text: string;
value: number;
}
然后我有一些JSON表示这些对象的一些实例。此JSON包含Quiz.name
的值,Quiz.questions
的数组各自具有其text
和value
字段的值。
别的地方,我得已从JSON.parse(json)
创建像下面的代码这个测验类的引用:
var json = '{"name": "quizA", "questions": [{"text": "Question A", "value": 0 }, ... ]}'
var quiz = <IQuiz>JSON.parse(json);
// Some other stuff happens which assigns values to each question
var score = quiz.score(); // quiz.score is not a function
看来反序列化对象不实际提供接口的实现。
如何获得对正确接口实例的引用,以便我可以调用quiz.score()并实际调用该方法?
在表达式之前放置''不会将对象转换为该接口的实例。它只是告诉TypeScript编译器_assume_它是该接口的一个实例。对于您的问题的答案:http://stackoverflow.com/questions/5873624/parse-json-string-into-a-particular-object-prototype-in-javascript –
JLRishe
谢谢,我看到了这个问题,我仍然希望有我想更好的答案。否则,看起来我需要为每个接受解析对象(或它的属性)的对象创建一个构造函数,并将它们映射到其中。对于此问题中的对象很简单,但对于更复杂的对象图很乏味... – Jaymz