7

我有以下代码:

///<reference path="../typescript/jquery.d.ts" />
function addThemePrototypes() {
    var templateSetup = new Array();
    $.fn.addTemplateSetup = function(func, prioritary)
    {
        if (prioritary)
        {
            templateSetup.unshift(func);
        }
        else
        {
            templateSetup.push(func);
        }
    };
}

有人能告诉我为什么应该用 => void 声明它吗?

interface JQuery {
    addTemplateSetup: (func: Function, priority: bool) =>void;
}

我想我对如何从 javascript 函数执行 returntype 有点困惑。有时我看到:jQuery,现在我看到 => void。两者有什么区别?

4

2 回答 2

5

在您的示例中,它们都使用冒号声明...

让我们把它分成两半!

没有类型声明...

interface JQuery {
    addTemplateSetup
}

类型声明...

: (func: Function, priority: bool) =>void;

如果你用这个词is代替:它就像说

名为“addTemplateSetUp”的属性:接受两个特定类型参数但不返回值的函数

这是一个示例,其中有两个实际上相同的接口,但一个使用 the =>,一个不使用。TypeScript 对两者的处理方式相同,因此这实际上取决于开发人员的偏好。

interface JQuery {
    addTemplateSetup: (func: Function, priority: bool) =>void;
}

interface Identical {
    addTemplateSetup(func: Function, priority: bool): void;
}

class ImplementsEither implements JQuery {
    addTemplateSetup (func: Function, priority: bool) : void {

    }
}

=>如果您喜欢几乎用英文阅读,您可以使用样式声明。

如果您希望您的界面看起来更像实现,您可以使用第二种样式。

于 2012-11-01T09:36:19.060 回答
0

它是关于函数返回什么的信息。它是返回一个 jQuery 对象(带有 JQuery 接口)还是一个不返回任何内容的 void 函数?

$("#someId").addTemplateSetup();

在您的示例中,您不返回任何内容,因此“void”是正确的。但是,如果您在 javascript 函数中返回“this”,这很常见,为了保持 jQuery 可链接性,您应该声明它返回 => JQuery;

$("#someId").addTemplateSetup().Show();
于 2012-11-01T08:54:57.880 回答