Campos, constructores, parameter properties, public, protected, private y #private, readonly, abstract e implements. Comprueba quién llega a cada miembro en una matriz en vivo.
Una clase de TypeScript es una clase de JavaScript con campos tipados y reglas de acceso. Los miembros public son accesibles desde cualquier sitio, los protected dentro de la clase y sus subclases, y los private solo dentro de la clase. Esas tres comprobaciones existen solo en tiempo de compilación. Un campo #name es privado también en el JavaScript que se ejecuta, y readonly bloquea las escrituras después del constructor.
Palabras clave de clase y lo que hacen
Elige un modificador y la matriz muestra cinco formas en que el código podría llegar a ese miembro, con el resultado de tsc para cada una. La fila de corchetes es la que sorprende: los modificadores de tiempo de compilación se pueden esquivar con una clave de texto, mientras que un campo # no.
private es una comprobación de TypeScript. Desaparece de la salida, y obj["secret"] sigue compilando y lee el valor. Un campo #secret es un campo privado de JavaScript: no hay ninguna clave de texto que llegue a él, y el código de fuera de la clase no puede leerlo en tiempo de ejecución.
Un atajo que declara y asigna un campo a partir de un parámetro del constructor. Escribir constructor(private readonly id: string) {} crea un campo id private readonly sin necesidad de cuerpo. El prefijo puede ser public, protected, private o readonly.
No. implements solo comprueba que la clase terminada encaja con la interfaz. Los parámetros de los métodos siguen necesitando sus propias anotaciones; si omites una en modo strict, obtienes un error de any implícito, aunque la interfaz ya indique su tipo.
strictPropertyInitialization, que strict activa, exige que cada campo declarado tenga valor en la declaración o en el constructor. Dale un valor, hazlo opcional o añade ! después del nombre si otra cosa lo asigna antes de usarlo.
Usa una clase abstracta cuando las subclases deban compartir código real, como un método que invoca un hook abstracto. Una interfaz no lleva código y una clase puede implementar varias, así que sirve para describir formas.
El constructor declara dos campos en su lista de parámetros. La caché es un campo #, así que nada fuera de la clase puede leerla ni vaciarla.
describe es código compartido; area es el hook que cada figura debe aportar. Con noImplicitOverride activado, la palabra override es obligatoria en area dentro de Circle.
La interfaz asegura que la clase tiene send con la forma correcta, pero el parámetro sigue necesitando su propia anotación de tipo.
Sin restricciones. Omitir el modificador significa lo mismo.
Dentro de los métodos de Account
Dentro de un método de Savings
Desde fuera, con un punto
Desde fuera, con una clave de texto
Desde fuera, asignando un valor nuevo
Abierto a la clase y a sus subclases. Una clave de texto sigue saltándose la comprobación, porque es solo una regla de tipos.
Dentro de los métodos de Account
Dentro de un método de Savings
Desde fuera, con un punto
Desde fuera, con una clave de texto
Desde fuera, asignando un valor nuevo
Cerrado incluso para las subclases, pero solo durante la comprobación de tipos. La forma con corchetes compila y el valor se puede leer en tiempo de ejecución.
Dentro de los métodos de Account
Dentro de un método de Savings
Desde fuera, con un punto
Desde fuera, con una clave de texto
Desde fuera, asignando un valor nuevo
Un campo privado de JavaScript. Ninguna clave de texto lo nombra, así que todas las rutas externas fallan, y el motor impone la misma regla en tiempo de ejecución.
Dentro de los métodos de Account
Dentro de un método de Savings
Desde fuera, con un punto
Desde fuera, con una clave de texto
Desde fuera, asignando un valor nuevo
Cualquiera puede leerlo; nadie puede asignarlo después de la construcción, ni siquiera los propios métodos de la clase.
Dentro de los métodos de Account
Dentro de un método de Savings
Desde fuera, con un punto
Desde fuera, con una clave de texto
Desde fuera, asignando un valor nuevo
Elige un modificador
Acceso a un miembro {v}
Usado desde
Código
Resultado de tsc
Compila
Empieza gratis · Sin tarjeta de crédito