And*_*ebb 20 functional-programming typescript
我有兴趣学习TypeScript,但前提是我可以使用它进行功能编码,并尽可能避免使用命令/ OOP.
TypeScript是否通过更好地支持函数式编程的基本JavaScript添加功能?这些是什么?
Rem*_*sen 19
JavaScript是一种多范式编程语言.
来自MDN:
多范式编程语言是一种支持多种编程范例的编程语言.多范式语言的核心思想是提供一个框架,程序员可以在其中以各种样式工作,从不同的范例中自由混合构造.这些语言的设计目标是允许程序员使用最好的工具来承担工作,承认单一范例无法以最简单或最有效的方式解决所有问题.
支持此视图,JavaScript支持或实际使用各种样式.例如,它的语法遵循类似C语言的结构,这是一种过程语言,同时JavaScript从面向对象的编程语言Java复制许多名称和命名约定,但这两种语言在其他方面是无关的并且非常不同的语义.JavaScript中的关键设计原则来自Self和Scheme编程语言.
TypeScript是JavaScript的超集,这意味着每个JavaScript程序也是一个有效的TypeScript程序.因此TypeScript也是一种多范式编程语言,可以用作函数式编程语言.
您可以通过Michael Fogus的Functional JavaScript一书学习如何将JavaScript和TypeScript用作函数式编程语言.
还可以查看一些开源库:
我不认为TypeScript比基本JavaScript有任何额外的FP功能.但是,TypeScript包含一种称为lambda语法 的替代函数语法()=>{}.
我相信这种语法没有被添加到TypeScript中以"使语言更具功能性",而是解决了一个常见的JavaScript问题:处理它的值this.
我们可以争辩说,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);
TypeScript的类型和类型在函数式编程中也非常重要.阅读AndréStaltz的"你的JavaScript函数真的是纯粹的吗? "来理解为什么.
TypeScript 2.0 引入了标记的联合.
标记的联合是一个令人兴奋的新功能,它将F#,Swift,Rust等语言的功能引入JavaScript,同时采用人们今天编写JavaScript的方式.此功能也称为区分联合,不相交联合或代数数据类型.
代数数据类型是函数式编程语言的另一个重要特性.因此我们可以看到TypeScript开始为FP开发人员添加功能.
TypeScript的最后两个版本引入了以下功能:结构类型系统,文字类型,区分联合,映射类型等.因此,类型系统现在可以更好地支持函数式编程用例.
| 归档时间: | 
 | 
| 查看次数: | 4379 次 | 
| 最近记录: |