Co to jest TypeScript i dlaczego miałbym go używać zamiast JavaScript? [zamknięte]

Czy możesz opisać czym jest język maszynopisu?

Co może zrobić JavaScript lub dostępne biblioteki, które dałyby mi powód do rozważenia tego?

Author: ganders, 2012-10-02

5 answers

Oryginalnie napisałem tę odpowiedź, gdy maszynopis był jeszcze nagrzewnica. Pięć lat później, to jest ok przegląd, ale spójrz na odpowiedź Lodewijka poniżej dla większej głębi

Widok 1000ft...

TypeScript jest supersetem języka JavaScript, który przede wszystkim zapewnia opcjonalne statyczne typowanie, klasy i interfejsy. Jedną z dużych korzyści jest umożliwienie IDE zapewnienia bogatszego środowiska do wykrywania typowych błędów podczas wpisywania kod.

[[4]} aby zrozumieć, co mam na myśli, obejrzyj wideo wprowadzające Microsoftu na temat języka.

W przypadku dużego projektu JavaScript, zastosowanie maszynopisu może skutkować bardziej wydajnym oprogramowaniem, a jednocześnie być wdrażane tam, gdzie zwykła aplikacja JavaScript byłaby uruchomiona.

Jest to open source, ale inteligentny Intellisense dostajesz tylko wtedy, gdy używasz wspieranego IDE. Początkowo było to tylko Visual Studio Microsoftu (odnotowane również w blogu z Miguel de Icaza ). Obecnie, inne IDE oferują również obsługę maszynopisu .

Czy istnieją inne technologie tego typu?

Jest CoffeeScript , ale to naprawdę służy innemu celowi. IMHO, CoffeeScript zapewnia czytelność dla ludzi, ale TypeScript zapewnia również głęboką czytelność dla narzędzi poprzez opcjonalne pisanie statyczne (zobacz ten Ostatni post na blogu dla trochę więcej krytyki). Jest teżDart ale to pełna wymiana dla JavaScript (choć może produkować kod JavaScript )

Przykład

Jako przykład, oto kilka maszynopisów (możesz grać z tym w maszynopis plac zabaw)

class Greeter {
    greeting: string;
    constructor (message: string) {
        this.greeting = message;
    }
    greet() {
        return "Hello, " + this.greeting;
    }
}  

A oto JavaScript, który by wytworzył

var Greeter = (function () {
    function Greeter(message) {
        this.greeting = message;
    }
    Greeter.prototype.greet = function () {
        return "Hello, " + this.greeting;
    };
    return Greeter;
})();

Zwróć uwagę, jak TypeScript definiuje typ zmiennych członkowskich i parametry metody klasy. Jest to usuwane podczas tłumaczenia na JavaScript, ale używane przez IDE i kompilator do wykrywania błędów, takich jak przekazywanie typu liczbowego do konstruktora.

Jest również w stanie wywnioskować typy, które nie są jawnie zadeklarowane, na przykład określi, że metoda greet() zwraca łańcuch znaków.

Debugowanie Maszynopisu

Wiele przeglądarek i IDE oferuje bezpośrednie wsparcie debugowania poprzez sourcemaps. Zobacz to pytanie o przepełnienie stosu, aby uzyskać więcej szczegółów: debugowanie kodu maszynopisu za pomocą Visual Studio

Chcesz wiedzieć więcej?

Napisałem tę odpowiedź, gdy Maszynopis był wciąż na gorąco. Sprawdź odpowiedź Lodewijka na to pytanie, aby uzyskać więcej aktualnych szczegółów.

 1063
Author: Paul Dixon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-06 20:06:35

Chociaż przyjęta odpowiedź jest w porządku, czułem, że naprawdę nie robi sprawiedliwości maszynopisu w tym momencie. To już nie są początki. TypeScript znajduje teraz o wiele większe zastosowanie, ponieważ kilka popularnych frameworków jest pisanych w maszynopisie. Powodów, dla których powinieneś wybrać TypeScript zamiast JavaScript jest teraz wiele.

Relacja do JavaScript

TypeScript to nowoczesny JavaScript + types. Chodzi o wczesne wykrywanie błędów i uczynienie cię bardziej wydajnym programistą, podczas gdy jednocześnie wykorzystując społeczność JavaScript.

JavaScript jest standaryzowany za pomocą standardów ECMAScript. Starsze przeglądarki nie obsługują wszystkich funkcji nowszych standardów ECMAScript(patrz tabela ). TypeScript obsługuje nowe standardy ECMAScript i kompiluje je do (starszych) wybranych przez Ciebie celów ECMAScript(obecne cele to 3, 5 i 6 [a. k. a. 2015]). Oznacza to, że możesz korzystać z funkcji ES2015 i innych, takich jak moduły, funkcje lambda, klasy, Operator rozprzestrzeniania i destrukcji, pozostając wstecznie kompatybilny ze starszymi przeglądarkami.

Obsługa typów nie jest częścią standardu ECMAScript i prawdopodobnie nigdy nie będzie wynikać z interpretacji zamiast kompilacji JavaScript. System typów maszynopisu jest niezwykle bogaty i zawiera: interfejsy, liczby, typy hybrydowe, typy generyczne, typy union/intersection,modyfikatory dostępu i wiele innych. Oficjalna strona maszynopisu zawiera przegląd tych funkcje. System TypeScript jest dziś na równi z innymi językami typowanymi, a w niektórych przypadkach prawdopodobnie bardziej wydajny.

Stosunek do innych języków JavaScript

TypeScript ma unikalną filozofię w porównaniu do innych języków, które kompilują się do JavaScript. Kod JavaScript jest poprawnym kodem TypeScript; TypeScript jest supersetem JavaScript. Możesz prawie zmienić nazwę Plików .js na .ts i zacząć używać maszynopisu (patrz "interoperacyjność JavaScript" poniżej). Pliki maszynopisu są kompilowane do czytelnego JavaScript, dzięki czemu możliwa jest migracja z powrotem i zrozumienie skompilowanego maszynopisu nie jest wcale trudne. TypeScript opiera się na sukcesach JavaScript, poprawiając jednocześnie jego słabe strony.

Z jednej strony masz przyszłościowe narzędzia, które wykorzystują nowoczesne standardy ECMAScript i kompilują je do starszych wersji JavaScript, z których najpopularniejszym jest Babel. Z drugiej strony, masz języki, które mogą całkowicie różnić się od JavaScript coffeescript, Clojure, Dart, Elm, Haxe, ScalaJs i cały host więcej(zobacz tę listę ). Języki te, choć mogą być lepsze niż przyszłość JavaScript, narażają się na większe ryzyko, że nie znajdą wystarczającej adopcji, aby zagwarantować ich przyszłość. Możesz również mieć więcej problemów ze znalezieniem doświadczonych programistów dla niektórych z tych języków, chociaż te, które znajdziesz, często mogą być bardziej entuzjastyczne. Interop z JavaScript może również bądź trochę bardziej zaangażowany, ponieważ są one dalej usuwane z tego, czym faktycznie jest JavaScript.

Maszynopis znajduje się pomiędzy tymi dwoma skrajnościami, równoważąc tym samym ryzyko. TypeScript nie jest ryzykownym wyborem dla żadnego standardu. To zajmuje bardzo mało wysiłku, aby się przyzwyczaić, jeśli jesteś zaznajomiony z JavaScript, ponieważ nie jest to zupełnie inny język, ma doskonałą obsługę interoperacyjności JavaScript i widział wiele adopcji ostatnio.

Opcjonalnie typowanie statyczne i typowanie wnioskowanie

JavaScript jest typowany dynamicznie. Oznacza to, że JavaScript nie wie, jakiego typu jest zmienna, dopóki nie zostanie utworzona w czasie wykonywania. Oznacza to również, że może być za późno. TypeScript dodaje obsługę typów do JavaScript. Błędy, które są spowodowane fałszywymi założeniami, że jakaś zmienna jest określonego typu, mogą zostać całkowicie wyeliminowane, jeśli dobrze rozegrasz swoje karty (to, jak ścisły wpisujesz kod lub jeśli w ogóle wpiszesz kod, zależy od Ciebie).

Maszynopis sprawia, że pisanie jest nieco łatwiejsze i o wiele mniej wyraźne dzięki zastosowaniu wnioskowania typu. Na przykład: var x = "hello" w maszynopisie jest takie samo jak var x : string = "hello". Typ jest po prostu wywnioskowany z jego użycia. Nawet jeśli nie wpisujesz jawnie typów, nadal są one tam, aby uchronić Cię przed zrobieniem czegoś, co w przeciwnym razie spowodowałoby błąd w czasie wykonywania.

TypeScript jest domyślnie wpisany. Na przykład {[5] } jest poprawną funkcją w maszynopisie, którą można wywołać za pomocą dowolnego rodzaju parametru, nawet chociaż wywołanie go z łańcuchem znaków oczywiście spowoduje błąd runtime . Tak jak jesteś przyzwyczajony do JavaScript. Działa to, ponieważ gdy Typ nie został jednoznacznie przypisany i nie można go wywnioskować, jak w przykładzie divideByTwo, TypeScript domyślnie przypisze typ any. Oznacza to, że podpis typu funkcji divideByTwo automatycznie staje się function divideByTwo(x : any) : any. Istnieje flaga kompilatora, która uniemożliwia takie zachowanie: --noImplicitAny. Włączenie tej flagi daje większy stopień bezpieczeństwo, ale także oznacza, że będziesz musiał więcej pisać.

Typy mają koszty związane z nimi. Po pierwsze, istnieje krzywa uczenia się, a po drugie, oczywiście, będzie to kosztować trochę więcej czasu, aby skonfigurować bazę kodową za pomocą odpowiedniego ścisłego pisania. Z mojego doświadczenia wynika, że te koszty są CAŁKOWICIE tego warte na każdej poważnej bazie kodowej, którą dzielisz się z innymi. W 2007 roku, w ramach projektu"The Sims 2007", w ramach projektu "The Sims 2007", w ramach projektu "The Sims 2007", w ramach projektu "The Sims 2007", w ramach projektu "The Sims 2007". języki w ogóle są mniej podatne na błędy niż typy dynamiczne, a silne pisanie jest lepsze niż słabe pisanie w tym samym zakresie".

Warto zauważyć, że ten sam artykuł stwierdza, że TypeScript jest mniej podatny na błędy niż JavaScript.]}

Dla osób z dodatnimi współczynnikami możemy oczekiwać, że język jest związany z, ceteris paribus, większą liczbą usterek. Języki te obejmują C, C++, JavaScript, Objective-C, Php i Python. W 2011 roku w ramach programu "Horyzont 2020" w ramach programu Horyzont 2020 w ramach programu Horyzont 2020 "Horyzont 2020" - program ramowy w zakresie badań naukowych i innowacji (2014-2020)]}, wszystkie mają ujemne współczynniki, co oznacza, że języki te są mniej prawdopodobne niż średnia, aby spowodować naprawienie błędów zobowiązuje.

Enhanced IDE support

Doświadczenie programistyczne z maszynopisem jest znacznie lepsze niż JavaScript. IDE jest informowane w czasie rzeczywistym przez kompilator TypeScript o jego bogatej informacji o typie. Daje to kilka głównych zalety. Na przykład za pomocą maszynopisu możesz bezpiecznie wykonywać refaktoryzacje, takie jak zmiana nazw w całej bazie kodu. Poprzez uzupełnianie kodu możesz uzyskać pomoc w wierszu, niezależnie od funkcji, jakie oferuje biblioteka. Nie musisz już ich pamiętać ani szukać w referencjach online. Błędy kompilacji są zgłaszane bezpośrednio w IDE za pomocą czerwonej linii squiggly podczas gdy jesteś zajęty kodowaniem. W sumie pozwala to na znaczny wzrost wydajności w porównaniu do pracy z JavaScript. Można wydać więcej kodowanie czasowe i mniej czasu debugowania.

Istnieje szeroka gama IDE, które mają doskonałe wsparcie dla maszynopisu, takich jak Visual Studio Code, WebStorm, Atom i Sublime.

Ścisłe kontrole null

Błędy uruchomieniowe formularza cannot read property 'x' of undefined lub {[10] } są bardzo często spowodowane błędami w kodzie JavaScript. Już po wyjęciu z pudełka TypeScript zmniejsza prawdopodobieństwo wystąpienia tego rodzaju błędów, ponieważ nie można użyć zmiennej, która nie jest znana kompilatorowi TypeScript (z wyjątek właściwości zmiennych typowanych any). Nadal jednak możliwe jest błędne użycie zmiennej ustawionej na undefined. Jednak w wersji 2.0 TypeScript można wyeliminować tego rodzaju błędy razem poprzez użycie typów nie nullable. Działa to w następujący sposób:

With strict null checks enabled (--strictNullChecks flaga kompilatora) kompilator TypeScript nie pozwoli undefined być przypisany do zmiennej, chyba że jawnie zadeklarujesz, że jest nullable Typ. Na przykład, let x : number = undefined spowoduje błąd kompilacji. Pasuje to doskonale do teorii typów, ponieważ undefined nie jest liczbą. Można zdefiniować x jako typ sumy number i undefined aby to skorygować: let x : number | undefined = undefined.

Gdy typ jest znany jako nullable, co oznacza, że jest typu, który może również mieć wartość null lub undefined, kompilator maszynopisu może określić poprzez analizę typu opartą na przepływie sterowania, czy kod może bezpiecznie używać zmiennej, czy nie. Innymi słowy, kiedy sprawdź, czy zmienna jest undefined Poprzez na przykład polecenie if kompilator TypeScript wywnioskuje, że typ w tej gałęzi przepływu sterowania Twojego kodu nie jest już nullable i dlatego może być bezpiecznie użyty. Oto prosty przykład:

let x: number | undefined;
if (x !== undefined) x += 1; // this line will compile, because x is checked.
x += 1; // this line will fail compilation, because x might be undefined.

Podczas konferencji build 2016 współprojektant maszynopisu Anders Hejlsberg przedstawił szczegółowe wyjaśnienie i demonstrację tej funkcji: wideo (od 44:30 do 56: 30).

Kompilacja

Aby użyć TypeScript do kompilacji kodu JavaScript potrzebny jest proces kompilacji. Proces budowania zajmuje zwykle tylko kilka sekund w zależności od wielkości projektu. Kompilator TypeScript obsługuje kompilację przyrostową (znacznik kompilatora--watch), dzięki czemu wszystkie kolejne zmiany mogą być kompilowane z większą prędkością.

Kompilator TypeScript może wbudować informacje o mapach źródłowych w wygenerowanym pliku .Pliki js lub utworzyć osobne .pliki map. Informacje o mapie źródłowej mogą być używane przez debugowanie narzędzia takie jak Chrome DevTools i inne IDE, aby powiązać wiersze w JavaScript z tymi, które wygenerowały je w maszynopisie. Dzięki temu można ustawiać punkty przerwania i sprawdzać zmienne podczas pracy bezpośrednio na kodzie maszynopisu. Source map information działa całkiem dobrze, to było na długo przed TypeScript, ale debugowanie TypeScript nie jest na ogół tak wielki, jak przy użyciu JavaScript bezpośrednio. Weźmy na przykład słowo kluczowe this. Ze względu na zmienioną semantykę słowo kluczowe this wokół zamknięć od ES2015, this może faktycznie istnieć w czasie wykonywania jako zmienna o nazwie _this (zobacz ta odpowiedź ). Może to mylić podczas debugowania, ale ogólnie nie stanowi problemu, jeśli wiesz o tym lub sprawdź kod JavaScript. Należy zauważyć, że Babel cierpi dokładnie ten sam rodzaj problemu.

Istnieje kilka innych sztuczek, które kompilator maszynopisu może zrobić, jak generowanie kodu przechwytywania na podstawie dekoratorów , generowanie module loading code for different module systems and parsing JSX. Jednak prawdopodobnie będziesz potrzebować narzędzia do budowania oprócz kompilatora maszynopisu. Na przykład, jeśli chcesz skompresować kod, musisz dodać inne narzędzia do procesu budowania.

Istnieją wtyczki kompilacji maszynopisu dostępne dla Webpack, Gulp, Grunt i prawie każde inne narzędzie do budowania JavaScript. Dokumentacja maszynopisu posiada sekcję na integracja z narzędziami budowania obejmujące je wszystkie. Linter jest również dostępny w przypadku, gdy chcesz jeszcze bardziej sprawdzić czas kompilacji. Istnieje również duża liczba projektów zalążkowych, które pomogą Ci rozpocząć pracę z maszynopisem w połączeniu z wieloma innymi technologiami, takimi jak Angular 2, React, Ember, SystemJs, WebPack, Gulp itp.

Interoperacyjność JavaScript

Ponieważ TypeScript jest tak blisko związany z JavaScript, ma wielki możliwości interoperacyjności, ale do pracy z bibliotekami JavaScript w maszynopisie wymagana jest dodatkowa praca. definicje maszynopisu są potrzebne, aby kompilator zrozumiał, że wywołania funkcji, takie jak _.groupBy, angular.copy lub $.fadeOut, nie są w rzeczywistości nielegalnymi instrukcjami. Definicje tych funkcji znajdują się w plikach .d.ts.

Najprostszą formą, jaką może przyjąć definicja, jest umożliwienie użycia identyfikatora w jakikolwiek sposób. Na przykład przy użyciu Lodash , plik definicji pojedynczej linii declare var _ : any pozwoli Ci wywołać dowolną funkcję na _, ale oczywiście nadal możesz popełniać błędy: {36]} byłoby legalnym wywołaniem maszynopisu, ale jest oczywiście nielegalnym wywołaniem w czasie wykonywania. Jeśli chcesz mieć wsparcie dla typu i uzupełniania kodu, plik definicji musi być bardziej dokładny (zobacz definicje lodash dla przykładu).

Moduły Npm , które są fabrycznie zapakowane z własnym typem definicje są automatycznie rozumiane przez kompilator maszynopisu(patrz dokumentacja ). Dla prawie każdej innej pół-popularnej biblioteki JavaScript, która nie zawiera własnych definicji, ktoś już udostępnił definicje typów za pośrednictwem innego modułu npm. Moduły te są poprzedzone znakiem "@ types/ " i pochodzą z repozytorium Github o nazwie DefinitelyTyped.

Jest jedno zastrzeżenie: definicje typów muszą być zgodne z wersją biblioteka, której używasz w czasie wykonywania. Jeśli nie, TypeScript może uniemożliwić wywołanie funkcji lub dereferencji zmiennej, która istnieje lub pozwolić na wywołanie funkcji lub dereferencji zmiennej, która nie istnieje, po prostu dlatego, że typy nie pasują do czasu uruchomienia w czasie kompilacji. Upewnij się więc, że załadowałeś odpowiednią wersję definicji typu dla właściwej wersji biblioteki, której używasz.

Szczerze mówiąc, jest w tym mały kłopot i może to być jeden z powody, dla których nie wybierasz maszynopisu, ale zamiast tego wybierz coś takiego jak Babel, które nie cierpi z powodu konieczności uzyskania definicji typu. Z drugiej strony, jeśli wiesz, co robisz, możesz łatwo przezwyciężyć wszelkiego rodzaju problemy spowodowane nieprawidłowymi lub brakującymi plikami definicji.

Konwersja z JavaScript do TypeScript

Dowolny plik .js można zmienić na .ts i uruchomić kompilator maszynopisu, aby uzyskać składniowo ten sam kod JavaScript, co wyjście (jeśli w pierwszej kolejności była poprawna składniowo). Nawet jeśli kompilator TypeScript otrzyma błędy kompilacji, nadal będzie produkował plik .js. Może nawet przyjmować Pliki .js jako dane wejściowe z flagą --allowJs. Pozwala to na natychmiastowe rozpoczęcie pracy z maszynopisem. Niestety błędy kompilacji mogą pojawić się na początku. Trzeba pamiętać, że nie są to błędy pokazowe, do których można się przyzwyczaić w innych kompilatorach.

Błędy kompilacji dostajemy w począwszy od konwersji projektu JavaScript do TypeScript projekt są nieuniknione przez TypeScript charakter. TypeScript sprawdza cały kod pod kątem ważności i dlatego musi wiedzieć o wszystkich używanych funkcjach i zmiennych. Dlatego definicje typów muszą być stosowane dla wszystkich z nich, w przeciwnym razie wystąpią błędy kompilacji. Jak wspomniano w powyższym rozdziale, dla prawie każdego frameworka JavaScript istnieją pliki .d.ts, które można łatwo uzyskać za pomocą instalacji DefinitelyTyped packages . Może jednak być tak, że użyłeś jakiejś niejasnej biblioteki, dla której nie są dostępne definicje maszynopisu lub że wypełniłeś kilka prymitywów JavaScript. W takim przypadku musisz podać definicje typu dla tych bitów, aby błędy kompilacji zniknęły. Po prostu utwórz plik .d.ts i dołącz go do tsconfig.tablica files jsona, tak że jest zawsze brana pod uwagę przez kompilator TypeScript. W nim zadeklarować te bity, które TypeScript robi Nie wiem o As type any. Po wyeliminowaniu wszystkich błędów możesz stopniowo wprowadzać pisanie do tych części zgodnie z własnymi potrzebami.

Niektóre prace nad (ponowną)konfiguracją potoku kompilacji będą również potrzebne, aby wprowadzić TypeScript do potoku kompilacji. Jak wspomniano w rozdziale dotyczącym kompilacji, istnieje wiele dobrych zasobów i zachęcam do szukania projektów zalążkowych, które wykorzystują kombinację narzędzi, z którymi chcesz pracować.

Największą przeszkodą jest krzywa uczenia się. Zachęcam do zabawy z małym projektem na początku. Zobacz, jak to działa, jak buduje, jakich plików używa, jak jest skonfigurowany, jak działa w IDE, jak jest ustrukturyzowany, jakich narzędzi używa, itp. Konwersja dużej bazy kodu JavaScript do maszynopisu jest wykonalna, gdy wiesz, co robisz. Przeczytaj ten blog na przykład na konwersja 600k linii do maszynopisu w 72 godziny ). Tylko upewnij się, że dobrze znasz język, zanim zrobisz skok.

Adopcja

TypeScript jest open source (Apache 2 licencjonowany, zobacz github ) i wspierany przez Microsoft. Anders Hejlsberg, główny architekt C# stoi na czele projektu. Jest to bardzo aktywny projekt; Zespół maszynopisu wypuścił wiele nowych funkcji w ciągu ostatnich kilku lat, a wiele z nich jest nadal planowanych (Zobacz mapę drogową {189]} {54]}).

W 2017 r. Firma StackOverflow opracowała i wdrożyła System Zarządzania Jakością ISO 9001: 2017.]} TypeScript był najpopularniejszym Transpilerem JavaScript (9 miejsce) i zdobył trzecie miejsce w kategorii najbardziej lubiany język programowania.
 768
Author: Lodewijk Bogaards,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-11 07:59:52

TypeScript robi coś podobnego do tego, co less lub SASS robi dla CSS. Są to super zestawy, co oznacza, że każdy kod JS, który piszesz, jest poprawnym kodem maszynopisu. Plus możesz użyć innych gadżetów, które dodaje do języka, a transpilowany kod będzie prawidłowy js. Możesz nawet ustawić wersję JS, na której chcesz włączyć kod wynikowy.

Obecnie TypeScript jest super zestawem ES2015, więc może być dobrym wyborem, aby rozpocząć naukę nowych funkcji js i transpile do potrzebnego standard dla Twojego projektu.

 59
Author: lebobbi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-21 15:28:56

"Podstawy maszynopisu" -- Pluralsight video-Kurs by Dan Wahlin oraz John Papa jest naprawdę dobry, obecnie (25 marca 2016) zaktualizowany do odzwierciedlenia TypeScript 1.8, wprowadzenie do Typescript.

Dla mnie naprawdę dobrymi cechami, oprócz ładnych możliwości intellisense, są klasy , interfejsy, Moduły , łatwość implementacji AMD oraz możliwość wykorzystania wizualnego Studio Typescript debugger podczas wywoływania z IE.

Podsumowując : jeśli jest używany zgodnie z przeznaczeniem, Typescript może sprawić, że programowanie JavaScript będzie bardziej niezawodne i łatwiejsze. Może to znacznie zwiększyć produktywność programisty JavaScript w stosunku do pełnego SDLC.

 33
Author: Dimitre Novatchev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-04 22:54:10

Skrypt Ecma 5 (ES5), który obsługuje wszystkie przeglądarki i wstępnie skompilowany. ES6 / ES2015 i ES/2016 przyszedł w tym roku z dużą ilością zmian, więc aby wyskakiwać te zmiany jest coś pomiędzy, które powinny dbać o tak maszynopisu.

* TypeScript to Types - > czyli musimy zdefiniować typ danych każdej właściwości i metod. Jeśli znasz C# to Typescript jest łatwy do zrozumienia.

* dużą zaletą maszynopisu jest to, że mamy problemy związane z typami tożsamości na wczesnym etapie przed rozpoczęciem produkcji. To pozwala na niepowodzenie testów jednostkowych w przypadku jakiegokolwiek niedopasowania typu.

 9
Author: Mayank Jain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-01 22:26:21