Búsqueda de sitios web

Métodos tipados en TypeScript


¿Cómo defino el tipo de un método de clase en TypeScript? Para una función regular, yo haría

interface Listener { (foo: string, bar: any): void; }

// foo and bar will be typed according to the Listener interface
let listener: Listener = function(foo, bar) { };

¿Es posible declarar un método con la interfaz Listener?

class Foo {

  // will warn about implicit 'any' types
  listener1(foo, bar) { }

  // I want to avoid this
  listener2(foo: string, bar: any): void { }
}

Esto me facilitaría sobrescribir el método en las subclases, sabiendo que los métodos deben cumplir con la interfaz Listener.

Respuesta #1

Si quieres asegurarte de que solo se pasen objetos a, por ejemplo, una función que "tenga" una función de escucha, también puedes usar una interfaz.

 interface IListener{
     listener(type: string, payload: any):void
 }

 function somethingElse( l:IListener ){
     l.listener( "hello", "heavy payload" );
 }

Espero que esto ayude.

Respuesta #2

class Foo {
    //as method
    foo(): boolean {
        return true;
    }

    //as lambda method
    bar = (): boolean => {
        return true;
    }
}

Artículos relacionados