使用更改成员创建对象

时间:2015-12-07 13:18:02

标签: javascript typescript

我有以下课程:

class Type1
{
    var1:string;
    var3:string;
}

var t1 = new Type1();
t1.var1 = "Hello";

问题在于,有时这个类将使用名为var2的对象而不是var1:

class Type1
{
    var2:string;
    var3:string;
}
var t1 = new Type1();
t1.var2 = "World";

我也想这样使用它:

var t1:Type1 = {var1:"Hello",var3:"SUCCESS"};

var t1:Type1 = {var2:"Hello",var3:"SUCCESS"};

我也需要这样做:

var t3 = new Type1();

名称var1和var 2是强制性的,因为我从外面获取它们。 如何创建这种类型的对象(不转换为任何对象)?

由于

3 个答案:

答案 0 :(得分:1)

实际上并不清楚你需要一个课程,你能不能只使用一个界面。这段代码适合我:

interface IType1 {
    var1?: string;
    var2?: string;
    var3: string;
}

var t1: IType1 = { var1: "Hello", var3: "SUCCESS" };
var t1: IType1 = { var2: "Hello", var3: "SUCCESS" };

答案 1 :(得分:0)

如果我理解你想要的东西 - 你希望用名为var1或var2的字符串创建一个对象。 我会这样写:

function Type1(name, data) {
  this[name] = data;
}

var t1 = new Type1("var1", "Hello");    // {var1: "hello"}
var t2 = new Type1("var2", "Hello 2");  // {var2: "Hello 2"}

答案 2 :(得分:0)

由于var1和var2来自外部,你可能应该在类之外声明它们

declare var var1:string;
declare var var2:string;

然后在课堂上检查一下你将使用哪一个。