【问题标题】:Assignment operator overloading in TypeScriptTypeScript 中的赋值运算符重载
【发布时间】:2013-01-21 13:20:23
【问题描述】:

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

比如说我有一个基类...

class Parent {
}

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

class Child extends Parent {
}

到目前为止一切都很好......但是可以说,现在我希望能够直接为我的 Child 类分配一些东西,如下所示:

private xyz: Child = "Foo Bar";

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

无法将字符串转换为 Child

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

编辑:我试过这个...

class Child extends Parent implements String {
}

...仍然没有达到预期的效果。

从 C# 的背景说起,我想我正在努力实现...

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

【问题讨论】:

    标签: javascript typescript ecmascript-5


    【解决方案1】:

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

    class Parent {
    }
    
    class Child extends Parent {
        constructor(private someProp: string) {
            super();
        }
    }
    
    var child = new Child("Foo Bar");
    

    【讨论】:

    • 从C#背景讲,有没有办法相当于public static implicit operator Child(string value) {}?
    • 目前 TypeScript 中不存在此功能 - 隐式和显式转换是 C# 中的一项简洁功能。你可以向 TypeScript 团队推荐它:typescript.codeplex.com
    猜你喜欢
    • 1970-01-01
    • 2012-04-22
    • 2015-06-01
    • 2011-01-27
    • 2011-05-31
    • 1970-01-01
    • 2013-03-30
    • 2013-02-14
    • 2016-08-30
    相关资源
    最近更新 更多