小编IBO*_*ED2的帖子

从子类更改超类实例变量的值

我发现我可以在子类中这样做:

ParentClass.variable = value;
Run Code Online (Sandbox Code Playgroud)

但我被告知最好使用get/set方法,而不是直接访问类外的变量.虽然这是因为我在另一个类中有一个类的实例,而不是子类和超类.

那么有没有更好的方法来做到这一点,哪种方式通常被认为是最佳实践?

java inheritance subclass superclass

7
推荐指数
1
解决办法
3万
查看次数

获取具有特定类型的可区分联合中的类的实例,而不是联合类型

有没有一种很好的方法可以让函数根据传递给它的共享属性的值创建一个类的新实例,并让它返回所创建实例的特定类型,而不是联合类型?稍微调整一下带有形状的打字稿文档示例:

class Square {
    kind: "square";
    size: number;
}
class Rectangle {
    kind: "rectangle";
    width: number;
    height: number;
}
class Circle {
    kind: "circle";
    radius: number;
}

type Kinds = "circle" | "rectangle" | "square";
type Shape = Square | Rectangle | Circle;

function createShape(kind: Kinds) {
    switch (kind) {
        case "circle":
            return new Circle();
        case "rectangle":
            return new Rectangle();
        case "square":
            return new Square();
    }
}

createShape("circle").radius; //Property 'radius' does not exist on type 'Square | Rectangle | Circle' …
Run Code Online (Sandbox Code Playgroud)

discriminated-union typescript

1
推荐指数
1
解决办法
247
查看次数