Arrays Typescript,React:TypeError:无法读取属性';推动';未定义的

Arrays Typescript,React:TypeError:无法读取属性';推动';未定义的,arrays,reactjs,typescript,Arrays,Reactjs,Typescript,这似乎是一个愚蠢的问题,但即使在我阅读了错误消息并试图在这里找到此类问题之后,我也无法找出它发生的原因以及我做错了什么 因此,主要目标是将book对象添加到library数组中。没有问题,至少现在是这样,应该可以正常工作(console.log显示一切正常),所有文件中的导出和导入都是正确的,我甚至在HiddenPanel.tsx文件中有代码片段,可以使用Library.ts中的库方法 class Book { constructor(public author: string, pub

这似乎是一个愚蠢的问题,但即使在我阅读了错误消息并试图在这里找到此类问题之后,我也无法找出它发生的原因以及我做错了什么

因此,主要目标是将book对象添加到library数组中。没有问题,至少现在是这样,应该可以正常工作(console.log显示一切正常),所有文件中的导出和导入都是正确的,我甚至在HiddenPanel.tsx文件中有代码片段,可以使用Library.ts中的库方法

class Book {
    constructor(public author: string, public title: string, public pages: string, public rating: number) {
        title = title
        author = author
        pages = pages
        rating = rating
    }     
}
class Library {
    static library: Array<object>

    library = [
        {
        author: 'Johann Fjord Kallenberg',
        title: 'Norvegian dragonslayers',
        pages: '443',
        rating: 4
        }, {
        author: 'Dungo McCallahey',
        title: 'Irish Golden Era',
        pages: '318',
        rating: 3
        }, {
        author: 'John Doe Mouse',
        title: 'Preparing to fight a Wolfgod',
        pages: '714',
        rating: 4
        }
    ]



public static addBook = (title: string, author: string, pages: string, rating: number) => {

        let book = new Book(title, author, pages, rating)
        Library.library.push(book)
        console.log(Library.library)
    }
}
错误:TypeError:无法读取未定义的属性“push” Function.push../src/Library.ts.Library.addBook src/Library.ts:36

第36行:

Library.library.push(book)
快速问题描述:某些类型的问题我无法理解。在按ADD(从Library.class中的方法调用push()后发生)

档案: 1.HiddenPanel.tsx 2.图书馆

class Book {
    constructor(public author: string, public title: string, public pages: string, public rating: number) {
        title = title
        author = author
        pages = pages
        rating = rating
    }     
}
class Library {
    static library: Array<object>

    library = [
        {
        author: 'Johann Fjord Kallenberg',
        title: 'Norvegian dragonslayers',
        pages: '443',
        rating: 4
        }, {
        author: 'Dungo McCallahey',
        title: 'Irish Golden Era',
        pages: '318',
        rating: 3
        }, {
        author: 'John Doe Mouse',
        title: 'Preparing to fight a Wolfgod',
        pages: '714',
        rating: 4
        }
    ]



public static addBook = (title: string, author: string, pages: string, rating: number) => {

        let book = new Book(title, author, pages, rating)
        Library.library.push(book)
        console.log(Library.library)
    }
}
我有一个带构造函数的Book类(Library.ts)

Book构造函数调用方法位于库类(Library.ts)中

类库{
静态库:数组
图书馆=[
{
作者:《约翰峡湾卡伦伯格》,
标题:“挪威屠龙者”,
第443页,
评级:4
}, {
作者:《邓戈·麦卡拉希》,
标题:“爱尔兰黄金时代”,
第318页,
评级:3
}, {
作者:《约翰·多伊老鼠》,
标题:“准备与狼神战斗”,
第714页,
评级:4
}
]
公共静态addBook=(标题:string,作者:string,页面:string,评级:number)=>{
let book=新书(标题、作者、页数、评分)
图书馆.图书馆.推送(书)
console.log(Library.Library)
}
}
正在从HiddenPanel.tsx调用构造函数

class HiddenPanel extends React.Component<Props, State> {
    constructor(props: Props) {
        super(props)
        this.state = {
            author: '',
            title: '',
            pages: '',
            rating: 0,
            value: '',
        }
    }

    ...some private methods here...

    private handleClick = () => {
        Library.addBook(this.state.author, this.state.title, this.state.pages, this.state.rating)
    }
    render() {
        return(
            <div className="add-book-section">
                ...some stuff here... 
                <div onClick={this.handleClick} className="submit">ADD</div>

                </div>
        )
    }
}
类HiddenPanel扩展了React.Component{
建造师(道具:道具){
超级(道具)
此.state={
作者:'',
标题:“”,
第页:'',
评级:0,
值:“”,
}
}
…这里有一些私人方法。。。
私有handleClick=()=>{
Library.addBook(this.state.author、this.state.title、this.state.pages、this.state.rating)
}
render(){
返回(
…这里有些东西。。。
添加
)
}
}
问题:

如果您阅读了注释并运行下面的代码段,则将清除问题背后的原因

类库{

静态库:Array/尝试这样定义类

class Library {
  static library = [
        {
        author: 'Johann Fjord Kallenberg',
        title: 'Norvegian dragonslayers',
        pages: '443',
        rating: 4
        }, {
        author: 'Dungo McCallahey',
        title: 'Irish Golden Era',
        pages: '318',
        rating: 3
        }, {
        author: 'John Doe Mouse',
        title: 'Preparing to fight a Wolfgod',
        pages: '714',
        rating: 4
        }
    ];
}

在类定义中,您需要实例化库来初始化类成员库,这就是为什么它是未定义的…
Library=[]
@AshwynHorton您能告诉我应该在哪里执行该操作吗?我已经在Library类中初始化了库,我尝试使用空数组(Library=[]),现在我似乎不明白(static library:Array)的用途。Eslint仍然没有给出错误。我将library:Array更改为static library:object[]=Array()而且它工作得很好…@MortViscity,这很有趣。请阅读问题背后的原因,很高兴知道它有帮助。相同。在这种情况下,eslint中没有错误有点令人困惑,但您是对的,我需要按照您提供的方式初始化类