Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Functional programming 与JavaScript相比,TypeScript提供了哪些额外的函数编程功能?_Functional Programming_Typescript - Fatal编程技术网

Functional programming 与JavaScript相比,TypeScript提供了哪些额外的函数编程功能?

Functional programming 与JavaScript相比,TypeScript提供了哪些额外的函数编程功能?,functional-programming,typescript,Functional Programming,Typescript,我对学习TypeScript感兴趣,但前提是我能用它进行功能性编码,并尽可能避免命令式/OOP TypeScript是否在基本JavaScript之上添加了更好地支持函数式编程的功能?它们是什么?JavaScript是一种多范式编程语言 发件人: 多范式编程语言是一种 支持多种编程模式。a的中心思想 Multiparagm语言是为程序员提供一个框架 可以以多种样式工作,自由混合来自 不同的范例。这些语言的设计目标是允许 程序员要为一项工作使用最好的工具,承认 范例不能以最简单或最有效的方式解决所

我对学习TypeScript感兴趣,但前提是我能用它进行功能性编码,并尽可能避免命令式/OOP


TypeScript是否在基本JavaScript之上添加了更好地支持函数式编程的功能?它们是什么?

JavaScript是一种多范式编程语言

发件人:

多范式编程语言是一种 支持多种编程模式。a的中心思想 Multiparagm语言是为程序员提供一个框架 可以以多种样式工作,自由混合来自 不同的范例。这些语言的设计目标是允许 程序员要为一项工作使用最好的工具,承认 范例不能以最简单或最有效的方式解决所有问题 对

支持此视图,JavaScript支持或实际上使用各种 风格。例如,它的语法遵循类似C语言的结构, 这是一种过程语言,同时也是JavaScript的副本 来自面向对象编程的许多名称和命名约定 语言,Java,但这两种语言在其他方面是不相关的,并且 非常不同的语义。JavaScript中的关键设计原则 来自Self和Scheme编程语言

TypeScript是JavaScript的超集,这意味着每个JavaScript程序也是有效的TypeScript程序。因此,TypeScript也是一种多范式编程语言,可以用作函数式编程语言

通过MichaelFogus的书,您可以学习如何使用JavaScript和TypeScript作为函数式编程语言

还可以查看一些开源库:

更新 我不认为TypeScript比基本JavaScript有任何额外的FP特性。但是,TypeScript包含一种替代函数语法,称为lambda syntax
()=>{}

我相信,在TypeScript中添加这种语法并不是为了“使语言更实用”,而是为了解决一个常见的JavaScript问题:

我们可以说lambda语法有助于创建比传统JavaScript代码更具功能性的代码。例如,不要写:

function isBigEnough(value) {
  return value >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
我们可以写:

var isBigEnough = (value) => value >= 10;
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
或者只是:

var filtered = [12, 5, 8, 130, 44].filter((value) => value >= 10);
更新2 类型脚本也有类型,类型在函数式编程中非常重要。阅读安德烈·斯泰尔茨的《我爱你》

打字脚本2.0

标记联合是一项令人兴奋的新功能,它将F#、Swift、Rust等语言的功能引入JavaScript,同时采用了当今人们编写JavaScript的方式。该功能也称为区分联合、不相交联合或代数数据类型

代数数据类型是函数式编程语言的另一个重要特性。因此,我们可以看到TypeScript开始为FP开发人员添加特性

更新3
TypeScript的最后两个版本引入了一些功能,如:结构类型系统、文字类型、区分联合、映射类型等。因此,类型系统现在对函数式编程用例有了更好的支持。

您能解释一下您希望使用的函数式编程的哪些属性吗?另外,您是指ECMAScri吗当您谈论JavaScript时,pt版本5或ECMAScript版本6?JavaScript支持函数式编程范式,是的。Typescript也支持函数式编程范式。您是否缺少更多函数式编程的一些特定功能(?!?)?它显然添加了类型,这对函数式编程非常有用。@davintroon等人-我发现很难回答您的具体问题,也很难让我的问题更清楚。我只是想问TypeScript是否在基本JavaScript上有帮助FP的结构,如果是,它们是什么。如果我问同样的问题,关于帮助OOP,obv很显然,答案是“是的”“,而且细节非常明显。不值得问。我认为TypeScript和FP之间的关系是一个有趣的关系,值得探索,因为网络上几乎没有宝贵的信息。我的具体问题是什么?决定它是否值得我学习。好问题。错误地愚蠢地结束了所说的好问题。我一定是在堆栈溢出问题上。我知道TypeScript是一个超集,所以我问TypeScript是否比基本JavaScript有更多的FP功能。@Andrewebb我已经更新了这个问题,以回答您关于“比基本JavaScrip有更多的FP功能”的问题。谢谢更新。有趣的是,您不认为TS为函数式编程增加了太多内容。TS看起来很有用,但如果它过于促进OOP,我会犹豫是否要学习它。FWIW:我正在读Fogus的书,已经使用了下划线,但现在更喜欢作为一个功能性JS库。