JavaScript jest językiem programowania wielu paradygmatów.
Od MDN:
Język programowania multi-paradygmat jest językiem programowania, który obsługuje więcej niż jeden paradygmat programowania. Główną ideą wielodrożnościowego języka jest zapewnienie ram, w których programiści mogą pracować w różnych stylach, dowolnie mieszając konstrukty z różnych paradygmatów. Celem takich języków jest umożliwienie programistom używania najlepszego narzędzia do pracy, przy założeniu, że pojedynczy paradygmat nie rozwiąże wszystkich problemów w najprostszy lub najbardziej efektywny sposób.
Obsługa tego widoku, obsługa JavaScript lub infact używa różnych stylów . Na przykład jego składnia jest zgodna ze strukturą podobną do języka C, , która jest językiem proceduralnym, a jednocześnie JavaScript kopiuje wiele nazw i konwencji nazewniczych z języka programowania obiektowego Java, ale te dwa języki nie są ze sobą powiązane. i mają bardzo różną semantykę. Kluczowe zasady projektowania w JavaScript pochodzą z języków programowania Self and Scheme.
TypeScript to nadzbiór JavaScriptu, co oznacza, że każdy program JavaScript jest również poprawnym programem TypeScript. Tak więc TypeScript jest również językiem programowania wielu paradygmatów i może być używany jako funkcjonalny język programowania.
Możesz nauczyć się używać JavaScript i TypeScript jako funkcjonalnego języka programowania z książką Functional JavaScript autorstwa Michaela Fogusa.
również sprawdzić niektóre biblioteki open-source:
Aktualizacja
Nie sądzę maszynopis ma żadnych dodatkowych funkcji PF nad podstawowym JavaScript. Jednak TypeScript zawiera alternatywną składnię funkcji znaną jako składnia lambda()=>{}
.
Wierzę, że ta składnia nie została dodana do TypeScript, aby "uczynić język bardziej funkcjonalnym", ale aby rozwiązać typowy problem z JavaScript: dealing with the value of this
.
Możemy argumentować, że składnia lambda ułatwia tworzenie kodu, który wygląda bardziej funkcjonalnie niż tradycyjny kod JavaScript.Na przykład, zamiast pisać:
function isBigEnough(value) {
return value >= 10;
}
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
Możemy napisać:
var isBigEnough = (value) => value >= 10;
var filtered = [12, 5, 8, 130, 44].filter(isBigEnough);
lub po prostu:
var filtered = [12, 5, 8, 130, 44].filter((value) => value >= 10);
Aktualizacja 2
także maszynopis został rodzaje i typy są bardzo ważne w programowaniu funkcjonalnym. Czytaj "Is your JavaScript function actually pure? "André Staltz zrozumieć dlaczego.
maszynopis 2,0 introduces tagged unions.
rekord z wariantami są ekscytującą nowością, która przynosi funkcjonalność z języków takich jak F #, Swift, Rust, a inni do JavaScript, podczas gdy obejmując sposób, w jaki ludzie piszą dzisiaj JavaScript. funkcja ta nazywana jest także dyskryminowane związki, suma rozłączna lub algebraiczne typy danych.
algebraiczne typy danych to kolejna ważna cecha w konkursie ctional języki programowania. Widzimy więc, że TypeScript zaczyna dodawać funkcje dla programistów FP.
Update 3
Dwie ostatnie wersje maszynopis wprowadziliśmy takie funkcje, jak: układ konstrukcyjny typu, dosłownych typów związków, dyskryminowanych, odwzorowane typów itd Tak więc system typ ma teraz znacznie lepsze wsparcie dla programowania funkcjonalnego użytkowania przypadki.
Czy możesz wyjaśnić, jakie atrybuty programowania funkcjonalnego chcesz użyć? Czy masz na myśli ECMAScript w wersji 5 lub ECMAScript w wersji 6, gdy mówisz o JavaScript? –
Javascript obsługuje funkcjonalny paradygmat programowania, tak. Ergo tak samo pisze Maszynopis. Czy brakuje niektórych specyficznych funkcji do jeszcze bardziej funkcjonalnego programowania (?!?)? – deceze
oczywiście dodaje typy, które doskonale nadają się do programowania funkcjonalnego. :) – rompetroll