Статьи

Представляем TypeScript — JavaScript на стероидах

Если вы не прятались под кустом всю неделю, вы, несомненно, сталкивались с TypeScript ; Новый язык Microsoft для разработки приложений на уровне JavaScript . Вокруг много неверной информации, поэтому я решил присоединиться…

Во-первых, TypeScript не является заменой JavaScript. TypeScript для JavaScript, как C ++ для C. Это расширение языка, а не новый синтаксис сам по себе.

TypeScript компилируется ( «предварительно обработанный» или «транскомпилированный» было бы более подходящим описанием) в собственный код JavaScript. Это похоже на CoffeeScript, за исключением того, что TypeScript намного ближе к существующему синтаксису JavaScript; JavaScript ++, если хотите.

Особенности TypeScript

TypeScript предлагает статическую типизацию; Вы можете определить тип данных переменных. Синтаксис немного необычен для языков, основанных на C, в том смысле, что тип указан после переменной, например


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

Многие разработчики будут рады найти объявления классов и наследование, например,

 
// base class
class Language {
    private hasClasses: boolean;

	constructor(hasClasses: boolean) {
        this.hasClasses = hasClasses;
    }

    ClassSupported() {
		return (this.hasClasses ? "yes" : "no");
    }
}

// JavaScript language
class JavaScript extends Language {
    constructor(){
        super(false);
    }
}

// TypeScript language
class TypeScript extends Language {
    constructor(){
        super(true);
    }
}

var js = new JavaScript();
alert(js.ClassSupported()); // no

var ts = new TypeScript();
alert(ts.ClassSupported()); // yes

У нас также есть интерфейсы:

 
interface Website {
	name: string;
	url: string;
}

function ShowSite(site Website) {
	return site.name + " at http://" + site.url + "/";
}

alert(ShowSite({ name: "SitePoint", url: "www.sitepoint.com" }));

Интересно, что объект не должен явно указывать, что он реализует интерфейс; это только должно соответствовать ожидаемому определению.

Наконец, TypeScript реализует модули, например

 
module Say {
	export function Hello(text: string) {
        return "Hello " + text + "!";
    }
}
alert(Say.Hello("world"));

Весь код переводится прямо в JavaScript, например

 
var Say;
(function (Say) {
    function Hello(text) {
        return "Hello " + text + "!";
    }
    Say.Hello = Hello;
})(Say || (Say = {}));

alert(Say.Hello("world"));

Microsoft предоставила отличную онлайн-площадку, чтобы помочь вам оценить синтаксис: www.typescriptlang.org/Playground/

Мне нравится TypeScript, потому что …

Давайте посмотрим на хорошие вещи.

Разработчики, плохо знакомые с JavaScript, часто борются с концепцией наследования прототипов. Это другой подход к классическим концепциям наследования, используемым в таких языках, как C # и Java. TypeScript предлагает обнадеживающий комфорт.

Очевидно, что TypeScript использует предложенный синтаксис класса ECMAScript Harmony. Когда это станет широко доступным (не затаив дыхание), компилятору TypeScript не нужно будет преобразовывать классы, и ваш код все равно будет работать.

Статическая типизация обеспечивает лучшие возможности IDE, такие как автозаполнение, рефакторинг и отладка. Плагин был выпущен для Visual Studio, Sublime Text, Vim и Emacs, и в дальнейшем будет доступно больше. Другими словами, должно быть проще разрабатывать сложные приложения JavaScript.

TypeScript можно использовать на клиенте или сервере в Node.js. Это расширенный набор JavaScript и компилируется в сырой, не запутанный код. В отличие от языка Google Dart , TypeScript не пытается полностью заменить JavaScript, не требует, чтобы другие поставщики браузеров добавляли функции, или требует объемных библиотек времени выполнения при его транскомпиляции. У него гораздо больше шансов на успех.

Язык был разработан Андерсом Хейлсбергом, который принес нам превосходный C #. TypeScript имеет открытый исходный код и предоставляется по лицензии Apache 2.0 по адресу typescript.codeplex.com .

Наконец, компилятор TypeScript написан на TypeScript. Это невероятно круто.

Но…

Я подозреваю, что TypeScript будет принят разработчиками, использующими Microsoft .NET и Visual Studio. Хотя это, несомненно, полезно для других, есть сектора сообщества веб-разработчиков, которые не мечтают прикоснуться к продукту Microsoft. Решайтесь сами — всегда будет «Microsoft! ARGH !! Нееееет !!! » комментарии.

Microsoft создала TypeScript, потому что JavaScript остается самым неправильно понятым языком программирования из когда-либо созданных. В последние годы мнение улучшилось, но вы все равно увидите комментарии о том, что JavaScript является ошибкой и не должен использоваться «правильными» разработчиками. Лишь немногие приводят аргументированные аргументы, кроме собственного снобизма или неправильного понимания языка.

Я люблю JavaScript. Это гибкий, мощный и предлагает функции, которые принимаются на других языках. Я могу понять причину, лежащую в основе TypeScript, и думаю, что он реализован хорошо, но я вряд ли буду использовать его, когда буду более чем рад писать собственный код JavaScript, который более эффективен (или должен быть) .

Но если вы не любитель JavaScript, как я, TypeScript предлагает убедительную альтернативу.

Для получения дополнительной информации о TypeScript, зайдите на typescriptlang.org .

И, прежде чем вы спросите, Microsoft не спонсировала эту статью и не просила меня написать ее.