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

TypeScript中如何初始化类型为(x:number)=>{y:number,z:number}的变量?

问题原因

你写的代码存在两处语法问题,导致触发TS2695报错:

  • 箭头函数如果要直接返回对象字面量,不能直接用{}包裹内容,否则{}会被识别为函数体的块标记,而非对象字面量的边界
  • 块内的x+1,x+2会被解析为逗号运算符表达式,左值x+1没有被使用也没有副作用,符合报错规则的触发条件

正确初始化方式

写法1:用括号包裹返回的对象字面量(推荐简写)

let foo: (x: number) => { y: number, z: number } = (x) => ({ y: x + 1, z: x + 2 });

外层加()可以明确告诉编译器包裹的内容是要返回的表达式,避免被识别为函数块,同时显式标注对象的y、z属性名匹配定义的返回类型即可。

写法2:显式写return语句

let foo: (x: number) => { y: number, z: number } = (x) => {
  return {
    y: x + 1,
    z: x + 2
  };
};

如果用{}包裹函数体,就必须显式写return语句返回目标对象,同时标注对应属性名。

内容的提问来源于stack exchange,提问作者Display Name

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:18:02