Javascript Typescript和导出的函数语法

Javascript Typescript和导出的函数语法,javascript,angular,typescript,Javascript,Angular,Typescript,我在阅读ngx translate文档时发现了这段代码(这些代码解释了使项目Aot兼容的正确方法) 首先 export function createTranslateLoader(http: HttpClient) { return new TranslateHttpLoader(http, './assets/i18n/', '.json'); } @NgModule({ imports: [ BrowserModule, HttpClien

我在阅读ngx translate文档时发现了这段代码(这些代码解释了使项目Aot兼容的正确方法)

首先

export function createTranslateLoader(http: HttpClient) {
    return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

@NgModule({
    imports: [
        BrowserModule,
        HttpClientModule,
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: (createTranslateLoader),
                deps: [HttpClient]
            }
        })
    ],...

// AoT requires an exported function for factories
export function HttpLoaderFactory(http: HttpClient) {
    return new TranslateHttpLoader(http);
}

@NgModule({
    imports: [
        BrowserModule,
        HttpClientModule,
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: HttpLoaderFactory,
                deps: [HttpClient]
            }
        })
    ],...
我的问题是:将传递给
useFactory
的函数名用括号括起来与普通传递有什么区别


谢谢

我相信您被文档中示例中的一个怪癖误导了

非AOT版本可以是:

并且AOT版本必须具有导出的函数

export function yourFunction(http: HttpClient) {
    return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

@NgModule({
    imports: [
        BrowserModule,
        HttpClientModule,
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: yourFunction,
                deps: [HttpClient]
            }
        })
    ],...
换言之:

如果要在使用AoT编译或Ionic时配置自定义TranslateLoader,则必须使用导出函数而不是内联函数


这些方法之间没有区别。两者都是AOT兼容的,但是:useFactory:functionName和useFactory:(functionName)之间有什么区别??谢谢!区别在于括号。或者我还应该说什么?有。没有。区别。阅读下面的答案,你就能理解我的问题。这个答案没有回答你的问题。它没有说明括号和无之间的区别。我删除的答案完全相同。
export function yourFunction(http: HttpClient) {
    return new TranslateHttpLoader(http, './assets/i18n/', '.json');
}

@NgModule({
    imports: [
        BrowserModule,
        HttpClientModule,
        TranslateModule.forRoot({
            loader: {
                provide: TranslateLoader,
                useFactory: yourFunction,
                deps: [HttpClient]
            }
        })
    ],...