gpt4 book ai didi

typescript - TypeError: book.isEqual 不是一个函数

转载 作者:行者123 更新时间:2023-12-01 21:56:34 26 4
gpt4 key购买 nike

在类中定义的方法在其他类中调用时不会被识别为函数。

文件:模型/book.model.ts

export class Book {
constructor(public title: string, public author: string) {
}

isEqual (other: Book ): boolean {
return (this === other);
}
}

文件:服务/books.service.ts

import { Book } from '../models/book.model';
import { Subject } from 'rxjs/Subject';
import * as firebase from 'firebase';
import DataSnapshot = firebase.database.DataSnapshot;

export class BooksService {
books = [new Book ('', '')]
booksSubject = new Subject<Book[]>();

constructor() {
this.getBooks();
}

emitBooks() {
this.booksSubject.next(this.books);
}

getBooks() {
firebase.database().ref('/books')
.on('value',
(data: DataSnapshot) =>
{
this.books = data.val() ? data.val() : [];
this.emitBooks(); /
}
);
}

indexOfBook (book: Book) {
const bookIndex = this.books.findIndex(
(a_book) => {return book.isEqual (a_book)}
);
return bookIndex;
}

我想在 BooksService 类中调用 Book 类的“book.isEqual”方法。book.isEqual 不被识别为函数,为什么?

最佳答案

Firebase 返回一些数据,但它只是一个对象:您需要使用 new Book() 从该数据创建一个Book 实例>.

firebase.database().ref('/books')
.on('value',
(data: DataSnapshot) =>
{
this.books = data.val() ? data.val().map(book => new Book(book[0], book[1])) : [];
this.emitBooks();
}
);
}

因为我不知道 Firebase 在 val() 中返回什么,这只是一个示例,假设数据包含一个 [author, title] 元组数组,但你明白了。也许它实际上是 new Book(book.author, book.title)...

关于typescript - TypeError: book.isEqual 不是一个函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56635722/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com