TypeScript获取Player类name属性时触发栈溢出错误求助
无限递归导致栈溢出的问题修复
问题根源
你的Player类里,name的getter和setter实现犯了典型错误:在getter里返回this.name,setter里赋值this.name = value——这会触发无限递归调用。
举个例子,当你调用player.name时,会触发get name()函数,而函数里的this.name又会再次调用这个getter,循环往复直到调用栈被耗尽,最终抛出RangeError: Maximum call stack size exceeded。
修复方案
把getter和setter里的操作对象改成私有字段_name即可,这样就不会触发自身的访问器:
// lib/player.ts export class Player { private _name: string; constructor(name: string) { this._name = name; } public get name() { return this._name; } public set name(value: string) { this._name = value; } }
测试验证
修改后运行index.ts,就能正常输出预期结果:
import { Player } from './lib/player'; const player = new Player('name'); console.log(player.name); // 输出: name
内容的提问来源于stack exchange,提问作者blxssom
相关产品推荐
相关产品推荐

