首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Typescript中的条件super()语句

Typescript中的条件super()语句
EN

Stack Overflow用户
提问于 2020-12-15 08:22:16
回答 1查看 190关注 0票数 1

我有一个通过super()实例化的类。在super()中,我想根据某些条件发送参数。但是如果我把if语句放在super()之前,typescript会给出编译错误,说super()必须是第一个语句。有没有办法实现基于条件的超类加载?

这是不起作用的代码。基于某些条件,我想在超级()中传递/阻塞依赖参数(ENGINE_MODEL)。你知道怎么做到这一点吗?

代码:

代码语言:javascript
代码运行次数:0
运行
复制
export class CreateChrStructureNodeControlComponent extends StructureNodeControl {
    constructor(private changeRequestCreateService: CreateChangeRequestService) {
    if(some condition = 'SF')  //my logic
        super(changeRequestCreateService,
            PLANT,
            ENGINE_MODEL);
    else 
         super(changeRequestCreateService,
            PLANT)
      ;
    }
}

超类:

代码语言:javascript
代码运行次数:0
运行
复制
export class StructureNodeControl extends BaseTypeaheadControl<TypeahaedLookupTableItem> {
    constructor(changeRequestCreateService: CreateChangeRequestService, ...dependencies: string[]) {
        super(STRUCTURE_NODE,
            changeRequestCreateService.getStructureNodes,
            TypeahaedLookupTableItem,
            ...dependencies);
    }
EN

回答 1

Stack Overflow用户

发布于 2020-12-15 08:41:18

只需将超级参数从varargs字符串数组更改为常规的旧字符串数组,然后您就可以有条件地向该数组添加依赖项,并过滤掉禁用的依赖项。

例如,将超类更改为:

代码语言:javascript
代码运行次数:0
运行
复制
export class StructureNodeControl extends BaseTypeaheadControl<TypeahaedLookupTableItem> {
    constructor(changeRequestCreateService: CreateChangeRequestService, dependencies: string[]) {
        super(STRUCTURE_NODE,
            changeRequestCreateService.getStructureNodes,
            TypeahaedLookupTableItem,
            ...dependencies);
    }

然后在你的子类中:

代码语言:javascript
代码运行次数:0
运行
复制
export class CreateChrStructureNodeControlComponent extends StructureNodeControl {
    constructor(private changeRequestCreateService: CreateChangeRequestService) {
   super(changeRequestCreateService,
         [
          PLANT,
          some_logic === 'SF' ? ENGINE_MODEL : null
         ].filter(Boolean) // get rid of the nulls
   );
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65298356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档