首页 > 解决方案 > 如何在 js 数组映射中声明 typescript 类型?

问题描述

我正在尝试使用 js 数组映射函数https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map进行以下映射

x =  state.users.map(({id, firstName, lastName}) => 
    ({id, value: `${firstName} ${lastName}`}));

Binding element 'X' implicitly has an any type但是,对于每个属性,例如 id、名字等,我都收到以下打字稿错误

如果我尝试为属性分配一个类型,如下所示:

x =  state.users.map(({id: number, firstName: string, lastName: string}) => 
    ({id, value: `${firstName} ${lastName}`}));

这些被分配为值而不是类型。

如何正确地将类型分配给地图函数中的属性?

标签: javascripttypescript

解决方案


你可以放任何:

x =  state.users.map(({id, firstName, lastName}: any) => 
    ({id, value: `${firstName} ${lastName}`}));

或使用显式类型:

x =  state.users.map(({id, firstName, lastName}: {id: string, firstName: string, lastName: string}) => 
    ({id, value: `${firstName} ${lastName}`}));

推荐阅读