我在从类中仅调用一个属性时遇到麻烦。 我的地图做错了吗?事实是,使用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;
}
答案 0 :(得分:2)
您的代码在这里
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
});