“这”在TypeScript中用作返回类型?

时间:2016-05-23 21:02:21

标签: typescript

我正在测试方法链,发现可以使用“this”作为返回类型来完成吗?

以下是一个例子:

class Shape {
    color: String;

    setColor(value: string): this { //Shape won't chain
        this.color = value;
        return this;
    }
}

class Square extends Shape {
    width: number;

    setWidth(value: number): Square {
        this.width = value;
        return this;
    }
}

function drawSquare(square: Square) {
    alert("width: " + square.width + "\ncolor: " + square.color);
}

let rect = new Square().setWidth(20).setColor("blue");
drawSquare(rect);

Example in playground

这是在混合基类和继承类时实现方法链的正确方法吗?

1 个答案:

答案 0 :(得分:6)

当然,使用多态this可以使流畅的api很容易表达,因为任何子类型都会流动。使用this类型。查看Advanced Types部分和F-bounded polymorphism