В WinJS декларирам клас така:
WinJS.Namespace.define("MyNamespace", {
MyClass: WinJS.Class.define(function ctor() {
//constructor
},
{
//instance members
},
{
//static members
})
});
Но в Typescript използвам:
module MyNamespace {
class MyClass {
constructor() {
}
}
}
Така че, искам да използвам изискването / импортирането на Typescript в проект WinJS. Какъв е най-добрият подход за това?
Отговори:
0 за отговор № 1Ако ще използвате TypeScript, тогава трябва да използвате класове / интерфейси / модули на TypeScript. Това ще ви позволи да получите всички предимства на статичното въвеждане, което TypeScript предоставя.
Забележка: Все още можете да получите предимствата с WinJS.Клас, но ще трябва да създадете интерфейс за класовете, които след това можете да използвате, за да кажете на компилатора TypeScript типа. Би било по-изрично и лесно бихте могли да забравите да го направите на места и да пропуснете допълнителните ползи от въвеждането.
0 за отговор № 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 (...) може да бъде пропуснато.