0

TypeScriptの優れたDefinedTypedリポジトリに貢献しようとしています。

ただし、WinJS で異常な関数宣言に遭遇し、コンパイラが文句を言わず、Visual Studio Intellisense が正しく動作するように、最も簡潔な TypeScript 定義が関数に対してどのようになるか疑問に思いました。

TypeScript定義/スタブに変換する方法がわからない方法はrender.value( MSDN ):

template.render.value(href, dataContext, container)

ほとんどの関数は簡単に翻訳できますが、関数上の関数、value、きれいに/正しく表現する方法がわかりません。

Templateこれまでのところ、クラス ( MSDN )用にこれを取得しました。完成させたいだけです。

class Template {
    public element: HTMLElement;
    public extractChild: boolean;
    public processTimeout: number;
    public debugBreakOnRender: boolean;
    public disableOptimizedProcessing: boolean;
    public isDeclarativeControlContainer: boolean;
    public bindingInitializer: any;

    constructor(element: HTMLElement, options?: any);
    public render(dataContext: any, container?: HTMLElement): WinJS.Promise<any>;
    public renderItem(item: any, recycled?: HTMLElement);
    // public render.value(  ***TODO 
}
4

1 に答える 1

2

これが私が思いついたものです。

declare class Template {
    element: HTMLElement;
    extractChild: boolean;
    processTimeout: number;
    debugBreakOnRender: boolean;
    disableOptimizedProcessing: boolean;
    isDeclarativeControlContainer: boolean;
    bindingInitializer: any;

    constructor(element: HTMLElement, options?: any);
    render: {
        (dataContext: any, container?: HTMLElement): WinJS.Promise<HTMLElement>;
        value(href: string, dataContext: any, container?: HTMLElement): WinJS.Promise<HTMLElement>;
    };
    renderItem(item: any, recycled?: HTMLElement);
}

から返された WinJS.Promise オブジェクトについての私の理解は、render渡された HTMLElementcontainerまたは新しい div をラップしていることです。だから私は promise を入力しましたWinJS.Promise<HTMLElement>

名前を付けて他の場所で宣言するのではrenderなく、型をインライン化しただけです。その定義内の最初の行は、関数のように扱うとどうなるかを示し、2 番目の行はそのオブジェクトの単なる通常のメンバーです。

于 2013-10-02T15:34:54.787 に答える