Подтвердить что ты не робот

Какие дополнительные функции функционального программирования предлагают TypeScript по сравнению с JavaScript?

Я заинтересован в обучении TypeScript, но только если я могу функционально с ним работать и избегать по необходимости/ООП как можно больше.

Добавляет ли TypeScript функции над базовым JavaScript, которые лучше поддерживают функциональное программирование? Что они?

4b9b3361

Ответ 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 появились такие функции, как: система структурного типа, типы букв, дискриминационные союзы, сопоставленные типы и т.д. Таким образом, система типов теперь намного лучше поддерживает случаи использования функционального программирования.