Criei as classes Funcionario e Diretor, sendo Gerente herdeira(filha) de Funcionários, mas ao instanciar um objeto Diretor obtive o seguinte erro: SyntaxError: Private field ‘#bonificacao’ must be declared in an enclosing class.
Substitui os “#” utilizado nos atributos privados por “_” e funcionou. Os atributos privados com “#” não são herdados? Alguél sabe a razão para que não funcione?
OBS: Estou usando o Node.js v.14.2.0 para interpretar o código.
Segue abaixo as classes em questão:
// index.js
import { Funcionario } from "./funcionario/Funcionario.js";
import { Gerente } from "./funcionario/Gerente.js";
import { Diretor } from "./funcionario/Diretor.js";
const diretor = new Diretor(11122233345, "Roberto", 2000);
export class Funcionario {
#bonificacao = 1;
#cpf;
#nome;
#salario;
#senha;
constructor(cpf, nome, salario) {
this.#cpf = cpf;
this.#nome = nome;
this.#salario = salario;
if (this.constructor == Funcionario)
throw new Error(
"Não é permitida a instanciação da classe Funcionario diretamente."
);
}
get senha() {
return this.#senha;
}
cadastrarSenha(senha) {
this.#senha = senha;
}
}
import { Funcionario } from "./Funcionario.js";
export class Diretor extends Funcionario {
constructor(cpf, nome, salario) {
super(cpf, nome, salario);
this.#bonificacao = 2;
}
}