在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行为。最好的方法是什么?
答案 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(...)。