Блог компании RUVDS.com
Angular
JavaScript
TypeScript
Разработка веб-сайтов
Комментарии 27
+12
Пожалуйста, перестаньте советовать использовать npm install whateever -g

Если ты работаешь один — это нормально. Но как только ты начинаешь работать в команде это головная боль, особенно для TypeSript который работает сборщиком и валидатором одновременно.

Объясню почему.

1. Разные правила валидации

У меня стоит глобально версия 2.1.4, у колегги 2.2.1. Обе мажорные версии и тем не менее они могут показывать разные ошибки. В итоге мой билд на соберется у него. (У меня локально все работает!)

2. Разная сборка

Если мы не ставим typescript per repository мы не можем гарантировать какой версией tsc будет обработан наш TS код. Соответственно что? Мы не можем быть на 100% уверены что наш локальный билд и билд на билд машине тот же. Не слишком ли круто?

3. Апдейты. Мы крутые ребята у нас tsc глобален и мы его используем для всех репозиториев. И тут мы решаем его слегка обновить. И половина локальных репозиториев вдруг перестает собираться (см. п.1) Прекрасно.

Потратьте немного времени, ставьте tsc локально и просто пишите корректный npm script run. Берегите свои силы и нервы.
0
По одному проекту потребовалось мне изучить азы Angular, чтобы написать небольшую прослойку между моим TypeScript проектом и Angular, дабы захватить аудиторию последнего. Вот и статья, судя по названию, должна была быть именно про это. Но про Angular ни слова.
+4

Отвратительный стиль подачи и выбор порядка материала.


Необязательные параметры в конструкторе

Необязательные параметры в любой функции, не только в конструкторе, помечаются таким образом. Помимо того, они всегда должны быть после обязательных, а еще могут иметь значение по-умолчанию.


Типов данных в TS не так уж и много, можно было бы и все перечислить. В данном конкретно случае пропущен, как минимум, функциональный тип, который является достаточно важным. Но что еще хуже — ни слова об type SOME_TYPE = 'a' | 'b' и вообще об, вроде это называется "алгербаическая система типов", но это не точно, что позволяет писать number | string или someInterface & anotherInterface.


И что классы с конструкторами и гетерами, что стрелочные функции, есть в js. Пишите про отличия? Пишите про отличия. А так это просто набор каких-то случайных выдержек из документации.


Про модули просто невероятно выразительно расписано. Даже про возможность написать import * as MyPoint from './myPoint';
Ни слова.

0
Ми качественно подаём только за деньги. Неужели ви думаете, что мы будем для вас стараться? У нас все советы такие.
+1

Я тоже не знаю зачем это есть в этой статье. Но оно есть, только в том виде, в котором все равно пойдешь читать документацию чтобы понять о чем речь.

0
Было бы интересно почитать про особенности TypeScript по сравнению с современным JavaScript (ES6 etc.), а не со старой версией языка.
0
А какие особенности интересуют? Интерфейсы, generics, private fields (которые еще не приватные)? Не то что бы там было сильно много и наверняка уже все написано…
0
Да, не то, чтобы что-то конкретное интересует. Просто рассматривать ts на базе старого js как то нерелевентно (имхо) чтоли. Выбирают то между ts и es (ну, не в случае ангуляра конечно). Для рекламы это хорошо. А практическая пользы намного меньше.
0
Мне ts удобнее. Коллега плюется и требует ES6. Каждому свое.
0
Ну я не думаю, что дело тут только в предпочтениях. У TS есть конкретные фичи, которых в ES6 нет и скорее всего не будет. Интерфейсы прежде всего. Которые делают актуальным TS во вполне конкретных ситуациях (поставка интерфейсов в условиях низкого покрытия кода модульными тестами и т.п.).
А так как в целом синтаксис у них не очень то и отличается, то между ними можно выбирать на базе потребностей проекта.
И, конечно, фичи именно TS горадо важнее, чем описанные, тут, например, стрелочные функции. Которые, вроде, уже во всех языках есть.
0
Имя метода геттера и сеттера принято/необходимо называть одинаково с именем поля, к которому осуществляется доступ, а у Вас почему-то имя получилось в аппер-кейсе
   get X() { //обратите внимание на пробел перед X
     return this.x;
   }
   set X(value) { //обратите внимание на пробел перед Y
     this.x = value;
   }
0
> Имя метода геттера и сеттера принято/необходимо называть одинаково с именем поля, к которому осуществляется доступ

Его нельзя называть одинаково.
0
привет всем, вот интересует вопрос, может не совсем по теме.
Нашей команде заказчик дал задание: написать ОДНО приложение (типа Megogo) для просмотров фильмов и ТВ каналов на платформах Tizen, WebOS, Android, iOS. Мы думаем использовать для этого Cordova + Angular. интересует как это соеденить, стоит ли вообще соединять или лучше писать на нативном ES6, и вообще кто сталкивался с подобными заданиями подскажите направление решения) ответы типа «пишите для каждой платформы свое приложение» не интересуют, заранее спасибо)
0
За тизен скажу — пишите на ванильном JS или край на AngularJS (который 1). Мы писали на реакте, кордова там вообще лишнее — всё платформо-специфичное API выведено в JS. Задолбаться — движок встроенный глючный, API телика документировано, но реалиям не соответствует. У ТВ разных модельных годов есть мягко говоря «особенности» воспроизведения видеопотоков. Самсунг регулярно выкатывает «новые» версии тизен, но косяки всё те же. Отладчика нормального нет.

По ощущениям чем проще фреймворк, тем легче будет отлаживаться. Смотреть в километровые трейсы (на любом современном фреймворке) то ещё удовольствие — и вы не сможете сказать сразу, то ли вы облажались, то ли платформа глючит.

Очень похожая ситуация, судя по заметкам в инете — и на WebOS (LG).

Про производительность кордовы на мобильных платформах не писал только ленивый — смотрите сами, хватит ли вам её.
0
Спасибо JSmitty, обсудим командой.
Если у кого еще есть опыт / советы, с радостью выслушаем.
+1
Всем советую, у кого есть готовая библиотека или какие-нибудь компоненты написать файл дефиниции типов(d.ts). Это позволит другим людям использовать вашу библиотеку в тайпскрипте, ну а если вы пользуетесь VisualStudio Code, так вы в придачу получаете intelisense, да же из javascript кода.
0
А статические анализаторы по типу PVS для js есть? Пора бы уже им появляться, ведь копипаста вредна независимо от языка программирования…
image
0
ESLint/TSLint + очень неплохой встроенный анализатор в WebStorm
0
Вы спросили про анализаторы. Я ответил.
WebStorm умеет находить копипасту.
+1
В статье не все примеры рабочие. Думаю, если читателю (под которым подразумевается новичок в Typescript) предлагается запустить какой-либо код, то он должен быть приведен корректно. В файле main.ts внутри функции пропущен метод console.
console(message);
В таком виде код упадет с ошибкой компиляции. Также внутри myPoints.ts в метод getDistanceBtw передается неизвестный тип AnotherPoint.
getDistanceBtw(another: AnotherPoint) {
    //посчитать и вернуть расстояние
}
Это вызовет ошибку при компиляции Typescript. Что-то вроде «Cannot find name 'AnotherPoint'». И зачем вообще приводить код этого метода, если он нигде не вызывается?
+1
В статье не все примеры рабочие.
Хвалить Typescript за то что он позволяет на стадии компиляции отлавливать ошибки и приводить примеры которые падают на стадии компиляции как рабочие примеры? - Это удивляет.
0
В примерах автора участки кода, отмеченные мной, позиционируются как рабочие. Автор не указывает, что в этих местах программа должна упасть. Напротив, он пишет, что результатом должно стать создание файла и класса соответственно. Если бы автор указал, что в приведенных двух случаях Typesript «подстрахует», я бы не писал свой первый комментарий.
Только полноправные пользователи могут оставлять комментарии. , пожалуйста.