Volver a la página principal
sábado 26 octubre 2024
7

Para qué sirve la propiedad strictPropertyInitialization en tsconfig.json

¿Qué es strictPropertyInitialization en tsconfig.json?

Cuando se establece "strictPropertyInitialization": true en tsconfig.json, TypeScript requiere que todas las propiedades de una clase sean inicializadas. Si no se asignan valores a las propiedades directamente o dentro del constructor, TypeScript generará un error. Esta opción es parte del modo estricto (strict) y funciona en conjunto con strictNullChecks, lo que garantiza que las propiedades no sean undefined a menos que se defina explícitamente el tipo como undefined.

Ejemplo de configuración con strictPropertyInitialization

Para habilitar strictPropertyInitialization, configura tsconfig.json de la siguiente forma:

{
  "compilerOptions": {
    "strictPropertyInitialization": true
  }
}

Con esta configuración, TypeScript obliga a inicializar todas las propiedades de las clases, asegurando que no se acceda a valores undefined inesperados.

Ejemplo de uso con strictPropertyInitialization

class User {
  name: string;
  age: number;

  constructor(name: string) {
    this.name = name;
    this.age = 30; // ✔️ Todas las propiedades se inicializan
  }
}

let user = new User("Alice");
console.log(user.name); // "Alice"
console.log(user.age);  // 30

En este ejemplo, TypeScript verifica que las propiedades name y age estén inicializadas antes de que se acceda a ellas. Si alguna de estas propiedades no se inicializara en el constructor, se generaría un error.

Para permitir que una propiedad se inicialice después, puede utilizarse el operador !:

class User {
  name!: string; // Permite retrasar la inicialización
  age: number = 30;
}

let user = new User();
user.name = "Alice"; // ✔️ Se inicializa posteriormente

Ventajas de utilizar strictPropertyInitialization

1. Prevención de errores en tiempo de ejecución: Evita el acceso a propiedades no inicializadas, reduciendo la probabilidad de errores undefined.

2. Seguridad y claridad en el código: Asegura que las propiedades tengan un valor inicial predefinido o claramente diferenciado como undefined.

3. Mejora de la calidad del código: Facilita la comprensión y el mantenimiento al exigir inicializaciones claras.

Enlaces de interés

Para más información sobre strictPropertyInitialization y otras configuraciones avanzadas en TypeScript, visita la documentación oficial de TypeScript.

Etiquetas:
typescript
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer