如何在TypeScript中使用静态类变量作为其他类的静态类变量的初始化值?

时间:2017-02-22 15:11:24

标签: typescript amd

请考虑以下代码,由3个简单类组成,其中我尝试使用“common”类的静态类变量来初始化另外两个类的静态类变量(以确保它们都使用相同的值)。 我在项目设置中使用AMD作为模块系统。

这是第一堂课:

import TestClassCommon from "TestClassCommon";

class TestClass1
{
    static ParameterNames =
    {
        CommonName: TestClassCommon.ParameterNames.CommonName,
        TestClass1Name: "TestClass1Name"
    }

    SomeAction()
    {
        console.log("TestClass1 action");
    }
}

export default TestClass1;

这是第二个:

import TestClassCommon from "TestClassCommon";

class TestClass2
{
    static ParameterNames =
    {
        CommonName: TestClassCommon.ParameterNames.CommonName,
        TestClass2Name: "TestClass2Name"
    }

    SomeAction()
    {
        console.log("TestClass2 action");
    }
}

export default TestClass2;

和“共同”的:

import TestClass1 from "TestClass1";
import TestClass2 from "TestClass2";

class TestClassCommon
{
    static ParameterNames =
    {
        CommonName: "CommonName"
    }

    static DoSomething()
    {
        console.log("Common name =     " + this.ParameterNames.CommonName);
        console.log("TestClass1 name = " + TestClass1.ParameterNames.TestClass1Name);
        console.log("TestClass2 name = " + TestClass2.ParameterNames.TestClass2Name);
    }
}

export default TestClassCommon;

当我然后使用这样的2个类:

import TestClass1 from "TestClass1";
import TestClass2 from "TestClass2";

let tc1 = new TestClass1();
let tc2 = new TestClass2();

我在TestClass2中遇到异常:

  

第11行第5行的未处理异常   http://localhost:54375/scripts/TestClass2.js

     

0x800a138f - JavaScript运行时错误:无法获取属性   未定义或空引用的“ParameterNames”

前段时间我遇到了类似的问题,但是在其他人的一些建议转而使用上述导入方式,定义类并导出类,这就解决了问题。

但现在我又遇到了这个问题。 谁能让这个简单的例子起作用? 谢谢!

0 个答案:

没有答案