お知らせ最初のコロン - subscribe
メソッドではなく、関数型のパブリックプロパティです。折り畳まれていない:
public subscribe: // public property, which is
(// of the type of a function, which takes
subscribeFunction: // 1 parameter, which itself is
(state) => void // a function of 1 parameter, returning nothing
) => // and the upon invocation of a function stored in "subscribe" it
() => void; // returns a function of no parameter and no return value
したがって、あなたは、パラメータとしてそれに機能を付与しながら、それを呼び出す、subscribe
プロパティに関数を格納することができ、結果として、あなたが後で呼び出すことができます別の関数、取得します:
をフィードバックのための
subscribe = (subscribeFunction: (state) => void) => {
subscribeFunction('A');
return() => {console.log('C');};
};
let subscribed = subscribe((state) => {
console.log(state, 'B');
}); // prints 'A,B'
subscribed(); // prints 'C'
ところで、より明示的にする必要があり、同意し、誰もがこれまで混乱コードを書くべきではありませんこのような。読むのが難しい場合は、それを壊してください! 'type VoidFunction = {():void; };サブスクライブ:{(subscribeFunction:(state)=> void):VoidFunction; } 'などです。 –