TypeScript中的类型化方法

TypeScript中的类型化方法,typescript,Typescript,如何在TypeScript中定义类方法的类型?对于常规函数,我会这样做 interface Listener { (foo: string, bar: any): void; } // foo and bar will be typed according to the Listener interface let listener: Listener = function(foo, bar) { }; 是否可以使用侦听器接口声明方法 class Foo { // will warn

如何在TypeScript中定义类方法的类型?对于常规函数,我会这样做

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

// foo and bar will be typed according to the Listener interface
let listener: Listener = function(foo, bar) { };
是否可以使用侦听器接口声明方法

class Foo {

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

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

这将使我更容易重写子类中的方法,因为我知道这些方法需要符合侦听器接口。

如果您想确保只将对象传递到“具有”侦听器函数的函数中,例如,您也可以使用接口

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

    //as lambda method
    bar = (): boolean => {
        return true;
    }
}
 interface IListener{
     listener(type: string, payload: any):void
 }

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

希望这能有所帮助。

但是这些都没有将方法的接口设置为
Listener
?这只是一个泛型类型方法的示例。只需将“boolean”替换为“Listener”,将其指定为返回该类型。除非我误解了你的问题?对不起,如果我不清楚的话,我想使用一个现有的接口来实现这个方法。