Loading...

Във форума е въведено ограничение, което позволява на потребителите единствено да разглеждат публикуваните въпроси.

Samuil.Petrow avatar Samuil.Petrow 1550 Точки

[Useful Info] JS OOP - TypeScript

За всички, които не харесват OOP-то в JavaScript съществуват благинки, които ни позволяват да пишем по-културно такова, което се транслира до чисто JS. 

Една такава благинка е TypeScript. В тази тема ще видите как се използва базово, примерите са извадени от официалния сайт.

Освен това ни се дават възможности за "типизиране" на езика и изкарване на грешки преди "компилация".

 

Как да започнем?

- Ако ползвате Visual Studio 2012 - инсталирате това - така ще имате компилатор и едитор за TypeScript.

- Ако ползвате Visual Studio 2013 Update 2 - TypeScript е in-build по default.

- TypeScript го има и в Node.js Tools for Visual Studio. Можете да сложите направо и този пакет.

- Може да се инсталира и през npm (Node.js) - npm install -g typescript

Ако не използвате VS, компилаторът се вика по следния начин от command line-a: tsc example.ts - където example.ts е избраният ни TypeScript файл.

 

Базово използване:

function hello(name: string) {
    return "Hello, " + person;
}

В този пример създаваме функция hello, която приема параметър name от тип string.

Извикването на функцията с друг тип данни би изкарало грешка:

var name = [0, 1, 2];
alert(hello(name));
Supplied parameters do not match any signature of call target

Въпреки грешката, изходен файл ще бъде създаден, TypeScript може да бъде ползван дори и с грешки в кода, смисълът е да ви предупреди предварително, че правите "мизерии".

 

Интерфейси (Interfaces):

TypeScript поддържа писането на interface-и, пример:

interface Person {
    firstname: string;
    lastname: string;
}

Използването им обаче е само за лична ориентация и подреждане на кода, интерфейсите се транслират до код без съдържание или иначе казано - до нищо, просто се премахват.

 

Класове (Classes)

class Student {
    fullname : string;
    constructor(public firstname, public middleinitial, public lastname) {
        this.fullname = firstname + " " + middleinitial + " " + lastname;
    }
}

Указването на public при приемането на параметри в конструктора ни позволява автоматичното създаване на property-та за тези параметри.

 

Нищо не разбрах? - TypeScript Лекция на Английски

Не ме кефи нещо... - Try CofeeScript

Мога ли да го ползвам на изпита? - Транслира се до чисто js, така че на който му е удобно може да го ползва.

За какво ми е да уча чисто ООП, не мога ли да науча направо това? - Не би било добре, не се ползва в много от компаниите, научете първо чисто ООП и после TypeScript или CofeeScript.

 

Тагове:
8
JavaScript Advanced 01/12/2015 10:03:41
Yulia avatar Yulia 1346 Точки

Само един съвет от мен: стига сте сравнявали JavaScript с който и да е типизиран език! Да, TypeScript и CoffeeScript са много популярни, но това е извращение според мен. Не се опитвайте да го "типизирате", за да има нещо уж "познато" - класове, интерфейси - глупости. Това е JavaScript и ако се опитате да го разберете като функционален език - тогава ще сте способни да видите красотата и силата му.

По тази причина не съм писала на TypeScript, но пробвах CoffeeScript (смятах, че ако науча CoffeeScript, после лесно ще науча Ruby xD). Беше забавно занимание, но все пак не препоръчвам да се пише на тях ако крайната ви цел е да получите JavaScript код.

3
29/10/2014 16:55:27
RoYaL avatar RoYaL Trainer 6849 Точки

Юле, по принцип съм супер съгласен с теб, но то друга страна сме на двата фронта - ти, която обожаваш джаваскрипт, и аз - който му е трудно да преглътне, че нещата се случват там по такъв начин. :)

И се питам - тъй като ми е трудно да преглътна себе си и да пиша the javascript way, защо да не пиша по моя си начин на някакъв такъв език, пък после компайлъра ще го сведе до js? :)

1
milen8204 avatar milen8204 296 Точки

@RoYaL   Ще се помъча да отговоря на въпроса ти: "...защо да не пиша по моя си начин на някакъв такъв език, пък после компайлъра ще го сведе до js? :)". Просто така няма да трупаш опит с JavaScript, а с TypeScript... или там на каквото пишеш. А когато трябва да се ориентираш в чужд JavaScript коd ще ти е по трудно. Все пак ако работиш в екип, който е ориентиран към JS приложения на дали всички остани няма да пишат "the javascript way".

0
RoYaL avatar RoYaL Trainer 6849 Точки

@milen8204 въпросът ми е по-скоро бизнес ориентиран. Ако съм в екип, който няма опит с javascript и the javascript way, а трябва да напише приложение на JS, защо да не пишем на близък до познатия ни синтаксис и парадигма, вместо тепърва да учим the javascript way. Аз нямам нищо против научаването на нови технологии, но няма ли да спадне delivery-то така, а и в процеса на работа, не е сигурно че учейки го и същевременно използвайки го, ще се използва по най-добрия възможен начин.

В крайна сметка, за да постигнеш целите си избираш най-suitable технологията по няколко критерия, единия от тях е с какъв човешки ресурс разполагаш. Ако хората ти знаят технологията "X" по-добре от "Y", а двете могат да постигнат еднакво добре крайната цел, няма никаква причина да избереш "Y".

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.