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

TypeScript中能否省略键名传递符合接口定义的对象?

TypeScript中能否省略接口对象键名以{ ['John'], 11 }形式创建?

不行,TypeScript(以及它基于的JavaScript)完全不支持这种省略键名的对象字面量写法。

原因说明

JavaScript对象字面量的核心语法要求必须明确写出「键: 值」的配对结构,{ ['John'], 11 }这种写法不符合标准语法规范,不管在JS还是TS环境里都会直接触发语法错误。

替代简化方案

如果你想减少代码冗余,可以试试这些方式:

  • 数组解构转换:先把数据存到数组里,再映射为符合接口的对象
    const rawData = ['John', 11];
    const aObj: A = { names: [rawData[0]], nr: rawData[1] };
    
  • 封装工具函数:写一个专用函数来生成符合A接口的对象,调用时只需传值
    interface A { names: string[]; nr: number; }
    function makeA(name: string, nr: number): A {
      return { names: [name], nr };
    }
    // 使用时直接传参:
    const aObj = makeA('John', 11);
    
  • 数组转对象的通用函数:如果是固定顺序的数组输入,可以写一个转换函数
    function arrayToA(arr: [string, number]): A {
      return { names: [arr[0]], nr: arr[1] };
    }
    // 使用:
    const aObj = arrayToA(['John', 11]);
    

TypeScript作为JavaScript的超集,不会修改JS的基础语法规则,所以JS不支持的语法糖,TS也不会额外提供。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:45:48