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;
}
}
