'(book: Book) => void' 类型的参数不可分配给类型 '(value: unknown) => void 的参数 | PromiseLike'。 参数“book”和“value”的类型不兼容。 类型“未知”不能分配给类型“书”。
答案 0 :(得分:-1)
有一个 difference between any
and unknown
。
简而言之,您的情况 - 您不能像在代码中那样将 unknown
视为 any
事物或 Book
。
如果您的方法返回 Promise<any>
或 Promise<Book>
,您将能够执行您在此处尝试的操作。
我会选择后者并像这样注释 getSingleBook 方法:
getSingleBook(id: number): Promise<Book> {
//...
const potentialBook = data.val();
const book: Book = validateBook(potentialBook); // throw an error if not a book
resolve(book);
//...
}
如果您 100% 确定它是并且永远是,那么您可以将已解决的价值断言为一本书,但这是不明智的:
getSingleBook(id: number): Promise<Book> {
//...
resolve(book as Book);
//...
}
谢谢jonrsharpe。