“类型 '(book: Book) => void' 的参数不可分配给类型 '(value: unknown) => void | PromiseLike<v 的参数

时间:2021-06-22 13:21:51

标签: angular typescript

enter image description here

enter image description here

enter image description here

'(book: Book) => void' 类型的参数不可分配给类型 '(value: unknown) => void 的参数 | PromiseLike'。 参数“book”和“value”的类型不兼容。 类型“未知”不能分配给类型“书”。

1 个答案:

答案 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