我有以下课程:
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是强制性的,因为我从外面获取它们。 如何创建这种类型的对象(不转换为任何对象)?
由于
答案 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;
然后在课堂上检查一下你将使用哪一个。