Typescript:如果派生类中未传递任何值,如何设置可选参数?

时间:2019-01-07 19:46:52

标签: javascript typescript

我有一个基类:

export class ClientBase {

  constructor(private uri: string, private httpClient: HttpClient) { }

  // My Various Methods
}

我有几个从ClientBase派生的类

例如:

@Injectable()
export class GizmoService extends ClientBase {

  constructor(private http: HttpClient)  
  {    
    super(environment.gizmoUri, http);
  }

};

因此,在GizmoService中,我想在一种特殊情况下专门传递Uri。

所以理想情况下,我想做这样的事情:

@Injectable()
export class GizmoService extends ClientBase {

  constructor(private http: HttpClient, uri?: string)  
  { 
    if (!uri) uri = environment.gizmoUri;
    super(uri, http);
  }

};

但是我收到一条错误消息,说明super必须是构造函数中的第一个调用。

如何解决此问题而不必对现有代码库进行大量更改? (即,不更改每次调用以传递2个参数)

1 个答案:

答案 0 :(得分:1)

您始终可以为uri参数设置默认值。

@Injectable()
export class GizmoService extends ClientBase {

  constructor(private http: HttpClient, uri: string = environment.gizmoUri) { 
    super(uri, http);
  }

}