首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Promise回调参数类型不能赋给'(value: unknown) => void | PromiseLike<void>‘

Promise回调参数类型不能赋给'(value: unknown) => void | PromiseLike<void>‘
EN

Stack Overflow用户
提问于 2021-06-22 21:21:51
回答 1查看 229关注 0票数 0

Typescript不喜欢我的then回调的参数类型:

代码语言:javascript
运行
复制
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'.
EN

回答 1

Stack Overflow用户

发布于 2021-06-22 21:37:01

有一个difference between any and unknown

简而言之,就您的情况而言-您不能像在代码中那样将unknown视为any,或将其视为Book。如果您的方法返回Promise<any>Promise<Book>,则可以执行此处尝试的操作。

我会选择后者,并将getSingleBook方法注释如下:

代码语言:javascript
运行
复制
getSingleBook(id: number): Promise<Book> {
//...
const potentialBook = data.val();
const book: Book = validateBook(potentialBook); // throw an error if not a book
resolve(book);
//...
}

如果你百分之百确定它是并且永远都是,你可以将解析后的值作为一本书来断言,但这是不明智的:

代码语言:javascript
运行
复制
getSingleBook(id: number): Promise<Book> {
//...
resolve(book as Book);
//...
}

谢谢,jonrsharpe

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68084354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档