Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Error when exporting function that returns class: Exported variable has or is using private name

I'm getting the error

error TS4025: Exported variable 'UserApiClientModule' has or is using private name 'UserApiClient'.

in the following code:

export var UserApiClientModule = {
  fromConfiguration: (configuration: Configuration) => {
    @NgModule({
      providers: [
        {
          provide: BASE_PATH,
          useValue: basePath
        },
        {
          provide: Configuration,
          useValue: configuration
        },
        RegistrationApi,
        AuthApi,
        AccountApi,
        ContactsApi,
        ContactOrgsApi
      ],
      imports: [
        CommonModule,
        HttpModule
      ]
    })
    class UserApiClient { }

    return UserApiClient;
  }
}

I suspect the solution is to export the type UserApiClient somehow but I'm not sure how to do this since it's declared in a function.

like image 375
Space Case Avatar asked Sep 06 '25 03:09

Space Case


1 Answers

The point here is:

Typescript tries to guess what is the returned type of all the public parts. And not only guess, but to really declare the UserApiClient as a part of returned type of the fromConfiguration call

And because we return something, which is not exported, is internal.. there is a problem. But we can easily return something else, e.g. some common interface ... or at least magical any

// change this
export var UserApiClientModule = {
  fromConfiguration: (configuration: Configuration) => {
    @NgModule({
    ...


// to that
export var UserApiClientModule = {                // below is the change
  fromConfiguration: (configuration: Configuration) : any => {
    @NgModule({
    ...

I would prefer to declare some common interface IHaveDynamicData ... as in fact in similar case shown here How can I use/create dynamic template to compile dynamic Component with Angular 2.0?

like image 149
Radim Köhler Avatar answered Sep 07 '25 20:09

Radim Köhler