使用打字稿...你能通過打字稿解釋這個奇怪的ES6箭頭功能嗎?
public subscribe:(subscribeFunction:(state)=>void)=>()=>void;
上午我理解這一點吧? 這是一個訂閱方法,獲取函數作爲參數,函數類型,並給出的函數,調用時將接受狀態參數,爭論的函數將不會返回任何東西(即:無效)...我迷失在last()=>()=> void
:/?
肖恩
使用打字稿...你能通過打字稿解釋這個奇怪的ES6箭頭功能嗎?
public subscribe:(subscribeFunction:(state)=>void)=>()=>void;
上午我理解這一點吧? 這是一個訂閱方法,獲取函數作爲參數,函數類型,並給出的函數,調用時將接受狀態參數,爭論的函數將不會返回任何東西(即:無效)...我迷失在last()=>()=> void
:/?
肖恩
這對被稱爲subscribe
的公共屬性,有一個類型的(subscribeFunction: (state) => void) =>() => void;
:
// scope
public
// name
subscribe:
// type (function)
// parameters
(
// parameter name
subscribeFunction:
// parameter type (function)
(state) => void
) =>
// return type (function)
() => void;
以下是編譯一個例子:
class MyClass {
public subscribe: (subscribeFunction: (state) => void) =>() => void;
}
let myInstance = new MyClass();
myInstance.subscribe = (subscribeFunction: (state) => void) => {
console.log("statements might go here");
return() => {
subscribeFunction(1 /* state */);
console.log("nothing returned by this inner function");
};
};
// Example use
// outputs "statements might go here"
let innerFunction = myInstance.subscribe((state) => console.log(state));
// outputs 1 and "nothing returned by this inner function"
innerFunction();
我一直以爲你會做一個:無效的函數,它不會返回任何東西,我猜想有多種方法... tx !!! – born2net
@ born2net是的,這就是它的意思。由於該方法具有返回類型'()=> void',因此它將返回一個不返回任何內容的函數。 –
@ born2net哇,我真的搞砸了原來的解釋。我錯過了':'......現在已經修好了。對於那個很抱歉。 –
公告第一個冒號 - 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'
TX反饋,現在我明白我認爲最好的解釋:
公共訂閱:(subscribeFunction:(狀態)=>無效)
//第一個藥水是subscribeFunction,它會接受一個不返回任何東西的函數
=>()=> void;
//第二藥水是對認購本身,因爲它會返回一個不返回任何內容的功能......和我同意,這樣的代碼應該更明確
順便說一句,沒有人應該永遠被寫的代碼混亂喜歡這個。如果很難閱讀,請將其分解! 'type VoidFunction = {():void; };訂閱:{(subscribeFunction:(state)=> void):VoidFunction;例如''。 –