类中定义私有属性#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
相关产品推荐
相关产品推荐

