Typade metoder i TypeScript
Hur definierar jag typen på en klassmetod i TypeScript? För en vanlig funktion skulle jag göra
interface Listener { (foo: string, bar: any): void; }
// foo and bar will be typed according to the Listener interface
let listener: Listener = function(foo, bar) { };
Är det möjligt att deklarera en metod med Listener-gränssnittet?
class Foo {
// will warn about implicit 'any' types
listener1(foo, bar) { }
// I want to avoid this
listener2(foo: string, bar: any): void { }
}
Detta skulle göra det lättare för mig att åsidosätta metoden i underklasser, med vetskapen om att metoderna behöver följa Listener-gränssnittet.
Svar #1
Om du vill vara säker på att endast objekt skickas in i till exempel en funktion som "har" en lyssnarfunktion kan du också använda ett gränssnitt.
interface IListener{
listener(type: string, payload: any):void
}
function somethingElse( l:IListener ){
l.listener( "hello", "heavy payload" );
}
Hoppas det här hjälper.
Svar #2
class Foo {
//as method
foo(): boolean {
return true;
}
//as lambda method
bar = (): boolean => {
return true;
}
}
