Ответ 1
JavaScript - это язык программирования с несколькими парадигмами.
От MDN:
Язык программирования с несколькими парадигмами - это язык программирования, который поддерживает более чем одну парадигму программирования. Центральная идея многопартийный язык должен обеспечить основу, в которой программисты могут работать в различных стилях, свободно смешивать конструкции из различные парадигмы. Целью разработки таких языков является разрешение программистов использовать лучший инструмент для работы, признавая, что один парадигма не может решить все проблемы в самом простом или эффективном путь.
Поддержка этого представления, поддержка JavaScript, или infact использует различные стили. Например, его синтаксис соответствует структуре языка C, который является процедурным языком, и в то же время копии JavaScript многие имена и соглашения об именах от объектно-ориентированного программирования язык, Java, но эти два языка в противном случае не связаны и имеют очень разная семантика. Основные принципы дизайна в JavaScript взяты из языков программирования Self и Scheme.
TypeScript является надмножеством JavaScript, что означает, что каждая программа JavaScript также является действительной программой TypeScript. Таким образом, TypeScript также является языком программирования с несколькими парадигмами, который может использоваться как функциональный язык программирования.
Вы можете узнать, как использовать JavaScript и TypeScript в качестве функционального языка программирования с помощью книги Функциональный JavaScript Майкла Фогуса.
Также проверьте некоторые библиотеки с открытым исходным кодом:
Update
Я не думаю, что TypeScript имеет любые дополнительные функции FP по базовому JavaScript. Однако TypeScript содержит альтернативный синтаксис функции, известный как синтаксис лямбда ()=>{}
.
Я считаю, что этот синтаксис не был добавлен в TypeScript, чтобы "сделать язык более функциональным", но для решения общей проблемы JavaScript: который имеет значение this
.
Мы можем утверждать, что синтаксис лямбда облегчает создание кода, который выглядит более функциональным, чем традиционный код 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
Также TypeScript имеет типы и типы, которые очень важны в функциональном программировании. Прочитайте Является ли ваша функция JavaScript действительно чистой?" Андре Стальцем, чтобы понять, почему.
TypeScript 2.0 вводит тегированные объединения.
Tagged union - захватывающая новая функция, которая привносит функциональность с языков, таких как F #, Swift, Rust и другие, в JavaScript, и охватывает то, как люди пишут JavaScript сегодня. Эта функция также называется дискриминированными объединениями, несвязанными объединениями или алгебраическими типами данных.
Алгебраические типы данных - еще одна важная особенность в языках функционального программирования. Таким образом, мы видим, что TypeScript начинает добавлять функции для разработчиков FP.
Обновление 3
В последних двух выпусках TypeScript появились такие функции, как: система структурного типа, типы букв, дискриминационные союзы, сопоставленные типы и т.д. Таким образом, система типов теперь намного лучше поддерживает случаи использования функционального программирования.