代码之家  ›  专栏  ›  技术社区  ›  Jasper Blues

TypeScript声明方法返回类型是类或子类的实例类型

  •  0
  • Jasper Blues  · 技术社区  · 5 年前

    typescript中有没有方法声明一个返回当前实例类型的方法?

    例如:

    class AnimalBuilder {
    
        withColor:(color: Color): AnimalBuilder    { 
           this.color = color; 
           return this; 
        } 
    
    }
    
    class DogBuilder extends AnimalBuilder { 
        //builder methods specific to a dog. 
    }
    

    . . 这样的召唤

    new DogBuilder().withColor()
    

    将有一个返回类型 DogBuilder AnimalBuilder . 在objective-c中,这样的事情被称为 instancetype . 我退房了 InstanceType<T> 但不知道是不是在说同一件事。

    这将允许以任何顺序链接父类和子类上的生成器方法,例如:

    new DogBuilder().withColor(Color.BLUE).withBreed(breed).withEtc()
    

    . . 而不必在子类上添加任何额外的代码来支持这一点。

    0 回复  |  直到 5 年前
        1
  •  3
  •   zhuber    5 年前

    您可以在基类中省略return参数,也可以返回 this 如果您想在方法上显示返回类型(可能更简洁一些)。

    class AnimalBuilder {
        color?: Color;
        withColor(color: Color): this { 
           this.color = color; 
           return this; 
        } 
    }
    

    playground .