typescript 为什么从函数返回箭头函数[duplicate]

ztmd8pv5  于 2023-01-14  发布在  TypeScript
关注(0)|答案(1)|浏览(153)
    • 此问题在此处已有答案**:

javascript es6 double arrow functions(2个答案)
(23个答案)
JavaScript curry: what are the practical applications?(17个答案)
十小时前关门了。
有人可以请指导/参考JS的概念,我需要通过下面的理解。
我在我的应用程序中有以下代码片段。它看起来像是返回函数dAFCreate,但我没有看到我们在其他地方调用函数dAFCreate(我期待一些函数调用,如DAF.foo.dAFCreate();,但没有这样的调用发生)
我试着在谷歌上搜索 * 为什么在函数中返回箭头函数 *,但没有得到任何相关信息

export class DomainAction implements Action {
    constructor(public type: string = "", public payload: string) {}
}

export class DAF {
    public static foo(type: string, defaultPayloadValue: any) {
        const dAFCreate = (payload: T): Action => {
             //do something, intialize _payload
            return new DomainAction(type, _payload);
        };
        return dAFCreate;
    }
}
3mpgtkmj

3mpgtkmj1#

返回的函数可以访问闭包变量typedefaultPayloadValue,由于箭头函数运算符,它还可以访问类的属性,这意味着this绑定到类。
搜索类似于

DAF.foo(...)(...);

let fn = DAF.foo(...); 
fn(...);

更新

请看下面的代码:

class DAF {
    iAmNotStatic = 'iAmNotStatic';
    static iAmStatic = 'iAmStatic';
    static foo(type, defaultPayloadValue) {
        const dAFCreate = (payload) => {
             console.log('payload:', payload);
             console.log('type:', type);
             console.log('defaultPayloadValue:', defaultPayloadValue);
             console.log('this.iAmNotStatic:', this.iAmNotStatic);
             console.log('this.iAmStatic:', this.iAmStatic);
             console.log('this:', this);
        };
        return dAFCreate;
    }
};

DAF.foo('type', 'defaultPayloadValue')('payload');

/*
OUTPUT:
payload: payload
type: type
defaultPayloadValue: defaultPayloadValue
this.iAmNotStatic: undefined
this.iAmStatic: iAmStatic
this: [class DAF] { iAmStatic: 'iAmStatic' }
*/

相关问题