如何将 WinJS 和 Typescript 一起使用?案例:WinJS 类与 Typescript 类
在 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 行为。最好的方法是什么?
答案#1
如果你打算使用 TypeScript,那么你应该使用 TypeScript 的类/接口/模块。这将使你能够获得 TypeScript 提供的所有静态类型的好处。
注意:你仍然可以通过 WinJS.Class 获得这些好处,但你需要为类创建一个接口,然后可以用它来告诉 TypeScript 编译器类型。这会更明确,但你可能很容易在某些地方忘记这样做,从而错过类型带来的额外好处。
答案#2
请参阅 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(...).
