[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.
Юле, по принцип съм супер съгласен с теб, но то друга страна сме на двата фронта - ти, която обожаваш джаваскрипт, и аз - който му е трудно да преглътне, че нещата се случват там по такъв начин. :)
И се питам - тъй като ми е трудно да преглътна себе си и да пиша the javascript way, защо да не пиша по моя си начин на някакъв такъв език, пък после компайлъра ще го сведе до js? :)
@RoYaL Ще се помъча да отговоря на въпроса ти: "...защо да не пиша по моя си начин на някакъв такъв език, пък после компайлъра ще го сведе до js? :)". Просто така няма да трупаш опит с JavaScript, а с TypeScript... или там на каквото пишеш. А когато трябва да се ориентираш в чужд JavaScript коd ще ти е по трудно. Все пак ако работиш в екип, който е ориентиран към JS приложения на дали всички остани няма да пишат "the javascript way".
@milen8204 въпросът ми е по-скоро бизнес ориентиран. Ако съм в екип, който няма опит с javascript и the javascript way, а трябва да напише приложение на JS, защо да не пишем на близък до познатия ни синтаксис и парадигма, вместо тепърва да учим the javascript way. Аз нямам нищо против научаването на нови технологии, но няма ли да спадне delivery-то така, а и в процеса на работа, не е сигурно че учейки го и същевременно използвайки го, ще се използва по най-добрия възможен начин.
В крайна сметка, за да постигнеш целите си избираш най-suitable технологията по няколко критерия, единия от тях е с какъв човешки ресурс разполагаш. Ако хората ти знаят технологията "X" по-добре от "Y", а двете могат да постигнат еднакво добре крайната цел, няма никаква причина да избереш "Y".