En WinJS declaro una clase así:
WinJS.Namespace.define("MyNamespace", {
MyClass: WinJS.Class.define(function ctor() {
//constructor
},
{
//instance members
},
{
//static members
})
});
Pero en Typecript uso:
module MyNamespace {
class MyClass {
constructor() {
}
}
}
Por lo tanto, quiero usar el comportamiento de requerir / importar de Typecript en un proyecto WinJS. ¿Cuál es el mejor enfoque para eso?
Respuestas
0 para la respuesta № 1Si va a usar TypeScript, entonces debe usar las clases / interfaces / módulos de TypeScript. Esto le permitirá obtener todos los beneficios de la escritura estática que proporciona TypeScript.
Nota: Aún podría obtener los beneficios con WinJS.Class, pero necesitaría crear una interfaz para las clases que luego podría usar para indicarle al compilador TypeScript el tipo. Sería más explícito, y fácilmente podría olvidarse de hacerlo en lugares y perderse los beneficios adicionales de escribir.
0 para la respuesta № 2
Ver el WinJS.Utilities.requireSupportedForProcessing . De acuerdo con esto, puede usar el módulo TypeScript clásico y la definición de clase. Por ejemplo:
module AnyModule
{
export class AnyClass
{
constructor()
{
}
public AnyMethod()
{
}
}
}
y luego marque esta clase (quién es la función de facto) para procesar en el código declarativo llamando WinJS.Utilities.markSupportedForProcessing. Después de esta simple modificación:
module AnyModule
{
export class AnyClass
{
constructor()
{
}
public AnyMethod()
{
}
}
WinJS.Utilities.markSupportedForProcessing(AnyClass);
}
Puede usar esta forma para la función clásica:
module AnyModule
{
function AnyFunc()
{
}
WinJS.Utilities.markSupportedForProcessing(AnyFunc);
}
. Llamar al método WinJS.Utilities.requireSupportedForProcessing se puede utilizar para validar el registro.
Si no necesita utilizar la clase o función en la llamada declarativa, puede omitir llamar a WinJS.Utilities.markSupportedForProcessing (...).