You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TypeScript函数中使用array.map报TS2740错误如何解决

报错原因

你的类型标注写法错误:声明transformArray时,直接给变量标注了Object2[]类型,相当于告诉TypeScript这个变量本身是由Object2类型元素组成的数组,但实际给变量赋值的是一个箭头函数,属于函数类型。
TypeScript做类型检查时发现,赋值的函数不存在数组类型自带的pop、push、concat、join等内置方法,和声明的Object2[]类型完全不匹配,因此抛出错误。报错末尾提示「是否要调用该表达式」,是TypeScript识别到你给数组类型的变量赋值了未执行的函数,猜测可能漏写了函数调用括号。

修复方法

把类型标注调整到正确位置,声明transformArray为接收Object1[]类型入参、返回Object2[]类型结果的函数即可,两种常用正确写法如下:

  • 给变量标注完整函数类型
interface Object1{
    id:number,
    label:string
}

interface Object2{
    id:number,
    description:string
}

const transformArray: (input: Object1[]) => Object2[] = (input) => {
    return input.map(item => {
        return {
            id: item.id,
            description: item.label
        }
    })
}
  • 直接给函数的入参、返回值标注类型,TypeScript会自动推导变量的函数类型
interface Object1{
    id:number,
    label:string
}

interface Object2{
    id:number,
    description:string
}

const transformArray = (input: Object1[]): Object2[] => {
    return input.map(item => ({
        id: item.id,
        description: item.label
    }))
}

两种写法效果完全一致,都能实现预期的类型约束:调用函数时传入Object1类型的数组,返回值会被TypeScript正确识别为Object2类型的数组。


内容的提问来源于stack exchange,提问作者Joshua Augustinus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.30 11:21:19