即使在课堂中定义了属性,属性也是不确定的



我很难从我的班级中调用一个属性。我做错了吗?事实是,映射一个带有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
    });

相关内容

最新更新