0

我正在使用 TypeScript 2.5.2。我曾尝试降级到 TypeScript 2.2.2,相同的代码已在另一个项目中运行。

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

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

语法有什么问题?

GitHub上的源代码

VSCode 截图

4

1 回答 1

3

仅查看这些类型而不是其余代码:类型参数 in.then((response: HttpClientResponse): Promise<{weather: IListItem}>指定响应是一个具有weathertype 属性的对象,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> => {.

于 2017-09-21T22:57:24.960 回答