Возможно, вам потребуется обновить узел. Частные поля c * поддерживаются по состоянию на 12.0.0
Если мы сначала изменим код для определения #_takenIDs
...
$ cat driverClass.js
class driverClass {
static #MAX_INSTANCES = 2;
static #instances = 0;
#_id = 0;
#_takenIDs = [];
static existsID (id) {
return driverClass.#_takenIDs.includes(id);
}
constructor (id) {
driverClass.#instances++;
this.#_id = id;
driverClass.#_takenIDs.push(id);
}
}
module.exports = driverClass;
.. и запустив его, используя узел v13.12.0, мы увидим правильное поведение:
$ node --version
v13.12.0
$ node
Welcome to Node.js v13.12.0.
Type ".help" for more information.
> let driverClass = require('./driverClass');
undefined
Однако, если мы загрузим более старую версию узла, то это не получится:
$ nvm use 10.14.1
Now using node v10.14.1 (npm v6.4.1)
$ node
> let driverClass = require('./driverClass');
./driverClass.js:2
static #MAX_INSTANCES = 2;
^
SyntaxError: Invalid or unexpected token