【问题标题】:TypeScript error will not satisfyTypeScript 错误不会满足
【发布时间】:2017-09-21 22:11:55
【问题描述】:

我正在使用 TypeScript 2.5.2。 我已经尝试降级到 TypeScript 2.2.2,同样的代码已经在另一个项目上运行了。

**错误: 文件:Weather.tsx' 严重性:“错误” 信息: '类型的参数'(响应:IListItem)=> void'不可分配给类型的参数 '(值:{天气:IListItem;})=>无效|许诺”。 'response' 和 'value' 参数的类型不兼容。

类型'{天气:IListItem; }' 与类型 'IListItem' 没有共同的属性。'**

语法有什么问题?

GitHub上的源代码

【问题讨论】:

    标签: reactjs typescript spfx typescript-2.5


    【解决方案1】:

    仅查看这些类型而不是其余代码:.then((response: HttpClientResponse): Promise<{weather: IListItem}> 中的 type 参数指定响应是具有 weather 类型为 IListItem 属性的对象,而不是裸露的 IListItem 你期待.then((response: IListItem): void => {,它解释了类型错误。

    如果 api 响应确实是一个对象,您可以将后者更改为 .then((response: {weather: IListItem}) 并将 .weather 添加到正文中 response 的每个出现(或者甚至在没有类型注释的情况下简单地解构:then(({weather}): void => { 和使用weather 而不是response。)

    另一方面,如果 api 只是返回一个IListItem,您可以将前者更改为.then((response: HttpClientResponse): Promise<IListItem> => {

    【讨论】:

    • .then((response: HttpClientResponse): Promise 是我的解决方案。谢谢先生。
    • promise 的类似问题。你知道错误可能是什么吗?:github.com/CodeHeight/some-webparts/issues/1
    • 如果您将其作为 SO 问题发布,其他人也可以尝试一下 :-)
    • 你是对的,这是一个单独的问题。最终,获得了与 一起使用的语法。不同的 TypeScript 版本正在杀死我。 ;-0
    猜你喜欢
    • 2022-12-11
    • 2022-10-13
    • 1970-01-01
    • 2013-09-02
    • 1970-01-01
    • 2020-09-24
    • 1970-01-01
    • 2021-03-02
    • 2021-02-05
    相关资源
    最近更新 更多