0

我一直在努力为TypeScript的优秀肯定类型存储库做出贡献。

不过,我在 WinJS 中遇到了一个不寻常的函数声明,想知道该函数最简洁的 TypeScript 定义是什么,这样编译器就不会抱怨并且 Visual Studio Intellisense 可以正常工作。

我不知道如何转换为 TypeScript 定义/存根的方法是render.valueMSDN):

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是,它包装了作为container或新 div 传入的 HTMLElement。所以这就是我输入 promise 的原因WinJS.Promise<HTMLElement>

因为render我只是内联类型而不是给它一个名称并在其他地方声明它,因为我认为这样更整洁。其定义中的第一行说明当您将其视为函数时会发生什么,第二行只是该对象的常规成员。

于 2013-10-02T15:34:54.787 回答