Когда я пытаюсь получить имя класса Player в index.ts, я получаю следующую ошибку:
/Users/pp/Developer/Typescript/src/lib/player.ts:10
public get name() { return this.name; }
^
RangeError: Maximum call stack size exceeded
at Player.get name [as name]
Вот код: библиотека/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; }
}
индекс.ц:
import { Player } from './lib/player';
const player = new Player('name');
console.info(player.name);
Предположительно, вам нужен return._name для геттера и this._name = value для сеттера.
Дубликат: Методы получения и установки JavaScript — проблема с рекурсией






Доступ к this.name вызовам get name() который обращается к this.name который вызывает get name() и так до бесконечности (или до тех пор, пока вы не исчерпаете стек вызовов).
Вероятно, вы намеревались сделать:
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; }
}
Доступ
this.nameзвонитget name()который обращаетсяthis.nameкоторый звонитget name()и так до бесконечности.