将 : 和 => 用于 TypeScript 函数的返回类型有啥区别?
Posted
技术标签:
【中文标题】将 : 和 => 用于 TypeScript 函数的返回类型有啥区别?【英文标题】:What is the difference between using : and => for the return type with a TypeScript function?将 : 和 => 用于 TypeScript 函数的返回类型有什么区别? 【发布时间】:2012-10-21 19:11:53 【问题描述】:我有以下代码:
///<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。两者有什么区别?
【问题讨论】:
【参考方案1】:在您的示例中,它们都使用冒号声明...
让我们把它分成两半!
没有类型声明...
interface JQuery
addTemplateSetup
类型声明...
: (func: Function, priority: bool) =>void;
如果您使用单词is
代替:
,就像在说
名为“addTemplateSetUp”的属性:一个接受两个特定类型参数但不返回值的函数
这是一个示例,其中两个接口实际上是相同的,但一个使用=>
,一个不使用。 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
如果您喜欢几乎用英文阅读,可以使用=>
样式声明。
如果您希望界面看起来更像实现,您可以使用第二种样式。
【讨论】:
【参考方案2】:这是关于函数返回什么的信息。它是返回一个 jQuery 对象(带有 JQuery 接口)还是一个不返回任何内容的 void 函数?
$("#someId").addTemplateSetup();
在您的示例中,您没有返回任何内容,因此“void”是正确的。但是,如果您在 javascript 函数中返回“this”,这很常见,为了保持 jQuery 可链接性,您应该声明它返回 => JQuery;
$("#someId").addTemplateSetup().Show();
【讨论】:
但有时我看到返回为“:jQuery”与“=> jQuery”不同 是的,我认为它只是写同一件事的两种方式,我更喜欢 addTemplateSetup:()=>JQuery,因为这就是智能感知在悬停时写的内容,但查看 MS 定义文件,它们似乎更喜欢 addTemplateSetup():JQuery以上是关于将 : 和 => 用于 TypeScript 函数的返回类型有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
将 ES5 JavaScript 用于 Angular 2 应用程序和使用 TypeScript 的优缺点是啥? [关闭]
将 Google Comlink 用于具有 React/Typescript 的网络工作者会导致 DOM 异常