2015-05-08 15 views
20

Jestem zainteresowany uczeniem się TypeScript, ale tylko wtedy, gdy mogę funkcjonalnie z nim kodować i unikać imperatywu/OOP w jak największym stopniu.Jakie dodatkowe funkcje programowania funkcjonalnego oferuje TypeScript w porównaniu do JavaScript?

Czy TypeScript dodaje funkcje do podstawowego kodu JavaScript, który lepiej obsługuje funkcjonalne programowanie? Czym oni są?

+5

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? –

+0

Javascript obsługuje funkcjonalny paradygmat programowania, tak. Ergo tak samo pisze Maszynopis. Czy brakuje niektórych specyficznych funkcji do jeszcze bardziej funkcjonalnego programowania (?!?)? – deceze

+1

oczywiście dodaje typy, które doskonale nadają się do programowania funkcjonalnego. :) – rompetroll

Odpowiedz

17

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.

+1

Rozumiem, że TypeScript to nadzbiór, więc pytałem, czy TypeScript ma dodatkowe funkcje FP w stosunku do podstawowego JavaScript. –

+0

@AndrewWebb Mam zaktualizowane pytanie, aby odpowiedzieć na pytanie o "dodatkowe funkcje FP w stosunku do podstawowego JavaScrip". –

+1

Thx za aktualizację. Ciekawe, że nie sądzisz, że TS dodaje wiele do programowania funkcjonalnego. TS wygląda na użyteczny, ale zawaham się go nauczyć, jeśli będzie promował OOP za dużo. FWIW: Czytam książkę Fogusa, użyłem Underscore, ale teraz wolę [Ramda] (http://ramdajs.com/) jako funkcjonalną bibliotekę JS. –

Powiązane problemy