这个函数的签名是啥意思?
Posted
技术标签:
【中文标题】这个函数的签名是啥意思?【英文标题】:What does this function's signature mean?这个函数的签名是什么意思? 【发布时间】:2018-02-06 12:07:37 【问题描述】:我正在关注这个tutorial,它有一个live example,它定义了这个函数:
onSelect(hero: Hero): void
this.selectedHero = hero;
: void
是我不明白的部分。这部分怎么称呼,有什么作用?
我的想法:这是函数的返回类型,但如果是这样的话,不应该
onSelect(hero: Hero): void
this.selectedHero = hero;
return hero;
抛出错误?该应用程序在 Plunker 中运行良好,控制台中没有显示错误(我想知道这是否与 Plunker 有关)。
函数是这样调用的:
<li *ngFor="let hero of heroes"
[class.selected]="hero === selectedHero"
(click)="onSelect(hero)">
<span class="badge">hero.id</span> hero.name
</li>
【问题讨论】:
onSelect(hero: Hero): Hero 原型?您的整个问题主体都没有提到原型。我猜你的意思是签名。 @gsamaras Ratio 我会说是正常的。可能会增加那些想知道“原型”但后来发现它一点也不有趣的人的流量,比如我自己 :-) 【参考方案1】:你的想法是正确的。它只是一个返回类型,就像其他编程语言(如 C#)中的函数一样。而当你返回Hero类型的对象时,它应该会报一个类似Type 'Hero' is not assignable to type 'void'
的错误,如下图所示:
【讨论】:
【参考方案2】:函数没有返回任何东西[void]
onSelect(hero: Hero): void
this.selectedHero = hero;
这个方法在调用时只是初始化类级别selectedHero
,并将英雄传递给方法。如果你看到 typescript 类,你会在组件中找到一个 selectedHero:Hero
变量。
【讨论】:
是的,我知道这门课。感谢您的回答,+1。但是我没有接受你的建议,因为你没有解释我的想法失败的原因。【参考方案3】:这意味着你的函数没有返回任何东西,你不能这样调用
let result = this.onSelect(someHero); // Here compiler will give you an error that the function can't be in the right side of the statement
查看示例here。可能是 Plunker 的错误,因为在他们的网站上你可以看到错误。
【讨论】:
以上是关于这个函数的签名是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章
`undefined` 的类型签名在 Haskell 中是啥意思?
php的openssl_sign($data,$sign,$private_key)这个函数的源码是啥?