你能通过打字稿解释这个奇怪的ES6箭头功能吗?

bor*_*net 8 typescript ecmascript-6

使用打字稿......

public subscribe:(subscribeFunction:(state)=>void)=>()=>void;
Run Code Online (Sandbox Code Playgroud)

我明白了吗?这是一个订阅方法,它将函数作为一个参数,函数类型,并且给定的函数,在调用时会收到一个状态参数,争论函数不会返回任何东西(即:void)...而我最后丢失了()=>()=>空隙

:/?

肖恩

Dav*_*ret 8

这是一个名为的公共财产subscribe,其类型为(subscribeFunction: (state) => void) => () => void;:

// scope
public
// name
subscribe:
// type (function)
    // parameters
    (
        // parameter name
        subscribeFunction:
        // parameter type (function)
        (state) => void
    ) => 
    // return type (function)
    () => void;
Run Code Online (Sandbox Code Playgroud)

这是一个编译的例子:

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();
Run Code Online (Sandbox Code Playgroud)

  • @ born2net是的,这就是它的含义.这里因为该方法的返回类型为`()=> void`,所以它返回一个不返回任何内容的函数. (2认同)