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

TypeScript类构造函数参数属性的顺序是否受Object.keys保证?

类实例通过Object.keys获取的键顺序是否有保证?

结论:在现代JavaScript/TypeScript环境中,类构造函数的公开参数属性生成的实例,通过Object.keys()获取的键顺序是有保证的,与参数声明的顺序完全一致。

具体解释:

  • 类的公开参数属性是语法糖,编译后会在构造函数内按参数声明的顺序,依次将值赋值给实例的对应属性,等价于手动编写如下代码:
    class Cat {
      constructor(name, age, color) {
        this.name = name;
        this.age = age;
        this.color = color;
      }
    }
    
  • 根据ECMAScript 2015及后续规范,对象的自有可枚举字符串属性的遍历顺序,严格遵循属性的创建顺序。这里的name、age、color是按参数顺序依次添加到实例上的,因此Object.keys()的返回顺序必然与参数声明顺序一致。

验证示例:

class Cat {
  constructor(
    public name:  string,
    public age:   number,
    public color: string
  ) {}
}

const sophie = new Cat('Sophie', 17, 'black');
console.log(Object.keys(sophie)); 
// 稳定输出:['name', 'age', 'color']

注:此行为仅在支持ES2015+的现代环境中有效,旧环境(如IE)不遵循该规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 00:40:19