TypeScript中的赋值运算符重载

时间:2013-02-06 11:03:49

标签: javascript typescript ecmascript-5

我正在编写一组使用继承来维护“类型”层次结构的TypeScript类(为了缺少更好的短语)。

比方说,我有一个基类...

class Parent {
}

然后我从中派生出其他类...

class Child extends Parent {
}

到目前为止一切都那么好......但是,现在我希望能够直接为我的Child类分配一些内容,如下所示:

private xyz: Child = "Foo Bar";

TypeScript当前会抛出编译器/语法错误...

  

无法将字符串转换为子

如果我可以将字符串分配给String(同样地,只是一个原型,就像我的Child类一样),如何重载我的类的赋值运算符以接受字符串?

编辑:我试过了......

class Child extends Parent implements String {
}

......但是,它没有达到预期的效果。

从C#背景讲,我想我正试图达到相当于......

public static implicit operator Child(string value
{
    return new Child(value);
}

1 个答案:

答案 0 :(得分:2)

在基于类的语言中,您通常会接受构造函数中的参数,如下所示:

class Parent {
}

class Child extends Parent {
    constructor(private someProp: string) {
        super();
    }
}

var child = new Child("Foo Bar");