TypeScript 错误将不满足

TypeScript error will not satisfy

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

**错误: 文件:Weather.tsx' 严重性:'Error' 信息: 'Argument of type '(response: IListItem) => void' 不可分配给类型的参数 '(价值:{天气:IListItem;})=>无效| PromiseLike'。 参数类型 'response' 和 'value' 不兼容。

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

语法有什么问题?

GitHub

上的源代码

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

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

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