Typescript不喜欢我的then
回调的参数类型:
Argument of type '(value: T) => void' is not assignable to parameter of
type '(value: unknown) => void | PromiseLike<void>'.
Types of parameters 'T' and 'value' are incompatible.
Type 'unknown' is not assignable to type 'T'.
发布于 2021-06-22 21:37:01
有一个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);
//...
}
如果你百分之百确定它是并且永远都是,你可以将解析后的值作为一本书来断言,但这是不明智的:
getSingleBook(id: number): Promise<Book> {
//...
resolve(book as Book);
//...
}
谢谢,jonrsharpe。
https://stackoverflow.com/questions/68084354
复制相似问题