Saltar al contenido

Clases estáticas de TypeScript

Solución:

Las clases abstractas han sido un ciudadano de primera clase de TypeScript desde TypeScript 1.6. No puede crear una instancia de una clase abstracta.

Aquí hay un ejemplo:

export abstract class MyClass {         
    public static myProp = "Hello";

    public static doSomething(): string {
      return "World";
    }
}

const okay = MyClass.doSomething();

//const errors = new MyClass(); // Error

TypeScript no es C #, por lo que no debe esperar necesariamente los mismos conceptos de C # en TypeScript. La pregunta es ¿por qué quieres clases estáticas?

En C #, una clase estática es simplemente una clase que no puede ser subclasificada y debe contener solo métodos estáticos. C # no permite definir funciones fuera de las clases. Sin embargo, en TypeScript esto es posible.

Si está buscando una forma de poner sus funciones / métodos en un espacio de nombres (es decir, no global), podría considerar usar los módulos de TypeScript, por ejemplo

module M {
    var s = "hello";
    export function f() {
        return s;
    }
}

Para que pueda acceder a Mf () externamente, pero no a s, y no pueda extender el módulo.

Consulte la especificación de TypeScript para obtener más detalles.

La definición de las propiedades estáticas y los métodos de una clase se describe en 8.2.1 de la Especificación del lenguaje mecanografiado:

class Point { 
  constructor(public x: number, public y: number) { 
    throw new Error('cannot instantiate using a static class');
  } 
  public distance(p: Point) { 
    var dx = this.x - p.x; 
    var dy = this.y - p.y; 
    return Math.sqrt(dx * dx + dy * dy); 
  } 
  static origin = new Point(0, 0); 
  static distance(p1: Point, p2: Point) { 
    return p1.distance(p2); 
  } 
}

dónde Point.distance() es un método estático (o “clase”).

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *