The private keyword is fine for TypeScript during development, but doesn't enforce private access at runtime where prefixing a class member with # will add the runtime enforcement.
See: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_properties