我很难从我的班级中调用一个属性。我做错了吗?事实是,映射一个带有quizword对象的新数组,而我的映射效果很好。但是,我有课堂内有属性和方法,我想稍后将其与对象一起使用。但是他们没有。怎么会?我以为我在映射它们时定义了新对象。
我开始想使用一个简单的foreach循环和循环通过对象,并调用一种将物体添加到对象的方法,但我无法调用任何方法。
以下是我的一些代码。
let list: Array<QuizWord> = words.map((a) => {
return <QuizWord>({
name: a.name
});
});
let letstrythisinstead: QuizWord = new QuizWord();
console.log(letstrythisinstead.test2); // this is not undefined. it works!
list.forEach((q: QuizWord) => {
console.log(q.name); // prints name correctly after mapping above
console.log(q.test2) // is undefined. why? I have defined it in my class..
});
export class QuizWord {
public test2: string = "hi";
public name: string;
}
您的代码
return <QuizWord>({
name: a.name
});
不会将返回的数据转换为QuizWord
。它只是告诉Typescript它是Quizword
项目,在这种情况下,它不是真的。
基本上,QuizWord
是一类,因此要分配一个值,您需要构造它。您可以像这样实现
export class QuizWord {
public test2: string = "hi";
constructor(
public name: string,
){ }
}
和
return new QuizWord(a.name);
而不是
return <QuizWord>({
name: a.name
});