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

类中定义私有属性#type时抛出SyntaxError: unexpected identifier求助

问题解决

错误原因

你遇到的SyntaxError是因为私有字段#type的初始化语法错误:JavaScript类的字段初始化使用赋值操作符=,而非冒号:(冒号是TypeScript的类型注解语法,普通JS不支持)。另外还有两个问题会导致你无法正常输出root:

  • 没有构造函数接收name参数并赋值给私有字段#name
  • 私有字段#name无法直接通过dir.name访问,需要添加getter方法

修正后的代码

const DIRECTORY_TYPE = {
    DEFAULT: 'DEFAULT'
}

class Directory {
    #name
    #type = DIRECTORY_TYPE.DEFAULT; // 修正:把冒号改为等号
    #children = new Map()
    #parent = null

    // 添加构造函数,接收name参数
    constructor(name) {
        this.#name = name;
    }

    // 添加getter,让外部能访问#name
    get name() {
        return this.#name;
    }
}

// 测试
const dir = new Directory('root');
console.log(dir.name); // 输出 'root'

关键修正点

  • 将#type: DIRECTORY_TYPE.DEFAULT;改为#type = DIRECTORY_TYPE.DEFAULT;:符合JavaScript类字段的初始化语法
  • 新增constructor方法:用于接收实例化时传入的name参数,赋值给私有字段#name
  • 新增name的getter:私有字段默认无法被外部访问,通过getter可以安全暴露#name的值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 03:20:14