如何一起使用WinJS和Typescript?案例:WinJS类vs Typescript类

时间:2014-04-04 20:15:07

标签: typescript winjs

在WinJS中,我声明了类:

WinJS.Namespace.define('MyNamespace', {
    MyClass: WinJS.Class.define(function ctor() {
        //constructor
    },
    {
        //instance members
    },
    {
        //static members
    })
});

但在Typescript中我使用:

module MyNamespace {
    class MyClass {
        constructor() {

        }
    }
}

所以,我想在WinJS项目中使用Typescript的require / import行为。最好的方法是什么?

2 个答案:

答案 0 :(得分:0)

如果您打算使用TypeScript,那么您应该使用TypeScript的类/接口/模块。这将使您获得TypeScript提供的静态类型的所有好处。

注意:您仍然可以使用WinJS.Class获得好处,但是您需要为类创建一个接口,然后您可以使用它来告诉TypeScript编译器类型。它会更加明确,您可能很容易忘记在某些地方进行操作,并错过了打字的额外好处。

答案 1 :(得分:0)

请参阅WinJS.Utilities.requireSupportedForProcessing。根据这个你可以使用经典的TypeScript模块和类定义。例如:

module AnyModule
{
  export class AnyClass
  {
    constructor()
    {

    }

    public AnyMethod()
    {
    }
  }
}

然后通过调用WinJS.Utilities.markSupportedForProcessing将此类(事实上的函数)标记为在声明性代码中进行处理。经过这个简单的修改:

module AnyModule
{
  export class AnyClass
  {
    constructor()
    {

    }

    public AnyMethod()
    {
    }
  }
  WinJS.Utilities.markSupportedForProcessing(AnyClass);
}

您可以使用这种方式进行经典功能:

module AnyModule
{
  function AnyFunc()
  {
  }
  WinJS.Utilities.markSupportedForProcessing(AnyFunc);
}

。然后可以使用WinJS.Utilities.requireSupportedForProcessing方法来验证注册。
如果您不需要在声明性调用中使用类或函数,则可以省略调用WinJS.Utilities.markSupportedForProcessing(...)。