我正在通过数组映射并使用解构。
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}`)
答案 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(请注意,选项中的noImplicitAny
是true
,arr0
映射错误,arr1
映射没有错误)
并且请检查Type Inference中有关示例背后的理论。