阵列解构的类型

时间:2019-01-16 16:55:23

标签: javascript typescript

我正在通过数组映射并使用解构。

const newArr = arr.map(({name, age}) => `${name} ${age}`)

上述错误为: 绑定元素“名称”隐式具有“任意”类型

错误通过添加以下内容而消失:

const newArr = arr.map(({name, age}: { name: string; age: number }) => `${name} ${age}`)

问题是:我是否可以使用更简洁的语法和/或通过接口应用所需的类型?


更新:结合以下评论以及@grumbler_chester和@TimWickstrom的建议

这是我发现缩短语法的更简洁的方法:

解决方案:

// User.tsx
interface User {
  name: string 
  age: number
}

const newArr = arr.map(({name, age}: User) => `${name} ${age}`)

2 个答案:

答案 0 :(得分:2)

如果您想进行严格的类型检查,则可以定义模型。

文件体系结构示例。

/src
  /models
    Person.js

Person.js

export default {
  name: string,
  age: number
}

在您的文件中

从'./models/Person.js'中导入Person //到Person.js的路径

const newArr = arr.map(({name, age}:Person) => `${name} ${age}`)

或者,如果您不需要严格的类型检查,并且希望禁止显示警告,则应该可以:

在tsconfig.json(https://www.typescriptlang.org/docs/handbook/tsconfig-json.html)中,您可以添加以下内容:

来自

"noImplicitAny": false,

"noImplicitAny": true,

答案 1 :(得分:1)

您可以将类型注释添加到arr变量中,TS会推断出破坏字段的类型。

请参阅example in playground(请注意,选项中的noImplicitAnytruearr0映射错误,arr1映射没有错误)

并且请检查Type Inference中有关示例背后的理论。