Typescript中的函数定义语法混淆

Posted

技术标签:

【中文标题】Typescript中的函数定义语法混淆【英文标题】:function definition syntax confuse in Typescript 【发布时间】: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)的书,它使用这个例子来说明为什么我们需要接口 如果您正在阅读的书一直有语法错误,您应该找另一本书...? 【参考方案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 区别在这里:***.com/questions/32043487/… 它只是一个属性简写

以上是关于Typescript中的函数定义语法混淆的主要内容,如果未能解决你的问题,请参考以下文章

两个具有静态返回类型的 TypeScript 函数。语法不同,但它们似乎做同样的事情?

带有泛型的 Typescript 箭头函数的语法错误

typeScript中的函数

useRequest 函数中的数据可能为 null/未定义 - Typescript、React

R语言加载UCI糖尿病数据集并启动Rattle GUI调用party包中的ctree函数构建条件推理树模型Rattle混淆矩阵使用R自定义编写函数通过混淆矩阵计算特异度敏感度PPVNPV

TypeScript类型断言数组的类型函数的类型