【问题标题】:function definition syntax confuse in TypescriptTypescript中的函数定义语法混淆
【发布时间】:2016-03-07 07:43:00
【问题描述】:

全部:

[UPDATE] 我想通了:SO 中的一篇文章解释了这一点: In TypeScript how do I declare an array of functions that accept a string and return a string?
事实证明:

形式的函数类型字面量

( 参数列表 ) => 返回类型

完全等价于对象类型字面量

{ ( ParamList ) : ReturnType }

所以,冒号: 带括号{} 箭头=>


我对 Typescript 很陌生,有一个例子让我对它的语法感到困惑:

var sayHello: (input: string) : string = function (s: string) {
    return "Hello " + s;
}
var stringUtils: { (input: string): string; }[];
stringUtils.push(sayHello);

谁能帮忙解释一下这段代码的作用?尤其是第一部分的定义是做什么的?

var sayHello: (input: string) : string = function (s: string) {
    return "Hello " + s;
}

示例说 sayHello 是一个函数变量,但是当我运行它时,我得到了“=>”预期的错误,这是否意味着该语法属于旧 typescript 但现在不存在?

谢谢

【问题讨论】:

  • 我实际上什至不确定这是有效的 TypeScript ......?当我将它粘贴在这里时,它似乎不起作用:typescriptlang.org/Playground
  • @Katana314 谢谢,我这边都没有,所以基本上可能是错字?
  • 这就是意图吗? var sayHello: (input: string) => string = function (s: string) { return "Hello " + s; }。在深入解释之前得到确认会很好
  • @Katana314 不确定,但我想是的。这来自一本名为“Typescript Revealed”(Pub. 2013)的书,它使用这个例子来说明为什么我们需要接口
  • 如果您正在阅读的书一直有语法错误,您应该找另一本书...?

标签: typescript


【解决方案1】:

谁能帮忙解释一下这段代码的作用?特别是第一部分定义的作用 var sayHello: (input: string) : string = function (s: string) {

应该是:

var sayHello: (input: string) => string = function (s: string) {

我们说sayHello 是一个接受字符串并返回字符串: (input: string) => string 的函数。然后我们把它赋值给这样一个函数= function (s: string) {

【讨论】:

  • 谢谢,我正在阅读您建议的 gitbook。让我困惑的一件事是接口的定义,我想知道如何定义一个带有字符串成员的接口和一个带有一个字符串参数的函数成员并返回字符串?
  • 我从这篇文章中读到:blogs.msdn.com/b/typescript/archive/2013/01/24/… 在接口内指定函数时,不知道为什么这次可以使用冒号? (在基本部分:它使用接口 Greetable { greet(message: string): void; } )
  • @Kuan 区别在这里:stackoverflow.com/questions/32043487/… 它只是一个属性简写
猜你喜欢
  • 1970-01-01
  • 2015-01-05
  • 1970-01-01
  • 2017-03-18
  • 1970-01-01
  • 2014-07-15
  • 2013-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多