LINUX.ORG.RU

Вышел Typescript 2.0

 ,


1

0

Новая версия Typescript включает множество дополнений, направленных на статический анализ программ и выявление ошибок на этапе компиляции в JavaScript. Для этого добавлен параметр --strictNullChecks, при использовании null и undefined с этим параметром необходимо явно указывать, что переменной можно присваивать эти значения. Исключение составляет тип any.

Пример:

let x: number;
let y: number | undefined;
let z: number | null | undefined;

В этом примере переменной x нельзя присваивать значения null и undefined, y может принимать значение null, z можно присваивать и null, и undefined.

Другие изменения:

  • Тип never представляет собой новый примитивный тип, который никогда не создается. Основное использование его — указание в качестве значения, которое возвращает функция, не возвращающая значения.
  • readonly-поля.
  • Возможность указать тип this для функции и соответствующий параметр (--noImplicitThis) для компилятора.
  • Дискриминированные объединения (discriminated unions aka tagged unions)
  • Поддержка Glob в tsconfig.json.
  • Улучшения в описании модулей BaseUrl, Path mapping, rootDirs, tracing.
  • Поддержка UMD-модулей.
  • Необязательные поля классов.
  • Private и Protected конструкторы.
  • Абстрактные поля.

>>> Подробности

★★☆☆

Проверено: Falcon-peregrinus ()
Последнее исправление: tailgunner (всего исправлений: 5)

Ответ на: комментарий от anonymous

Разумеется, ведь он все равно в итоге конвертируется в js что бы работать. Причём в очень говенный и тяжёлый код, проще сразу на js писать нормально.

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

anonymous
()
Ответ на: комментарий от Vit

да. где-то с марта месяца команда в которой я работаю начала писать используя только TS. + понемногу переписывали существующий код который был на JS (es5). проект большой: 12 апок (1-4K JS cloc) + ядро с виджетами, стилями и прочей лабудой. сейчас почти все на TS.

из плюсов: полный автокомплит для сигнатур, имен полей, методов и прочих требухов; компиляция и валидация на лету в IDE аля atom/WS (как в других - я хз); отсекает все простые/базовые ошибки еще в процессе написания кода. Когда втягиваешься оверкил небольшой и совсем не напрягает. единственное не надо ложить болт на написание интерфейсов, иначе профит стремится к нулю^W^W^Wсильно падает.

из минусов: сложно начинать ибо идешь как бы «в слепую». но по мере продвижения усилий приходится прикладывать все меньше а помощи от IDE получаешь все больше. далеко не все из 3rd party имеет typings. либо есть но устаревшее. в таком случае или дописываешь сам или убиваешь котика^W^Wюзаеш any.

сегодня как раз нужно было подебажить один свой старый проект. несколько раз пожалел что он не на TS. секномил бы немного времени.

как выше сказали штука однозначно хороша в больших или длинных проектах. в других нужно смотреть но скорее всего нет.

также согласен с мыслью что рано или поздно в JS войдет типизация и TS станет не нужен.

ps: сори я после нескольких часов плотного дебага + 2 пива расслабился и соображаловка и концентрация ушли на покой. мож че забыл, упустил или перепутал

ZuBB ★★★★★
()
Последнее исправление: ZuBB (всего исправлений: 1)
Ответ на: комментарий от ZuBB

отсекает все простые/базовые ошибки еще в процессе написания кода

А есть пример, что часто случается но можно отсечь только тайпскриптом (а не линтером)?

Vit ★★★★★
()

typescript

Костыль для костыля

Ni2
()
Ответ на: комментарий от anonymous

А в том, что он имеет какую нибудь вот такую структуру

{
   ...
   , 9: [ ... ]
}

это все очень долго исполняется и рабочий код приходится куда то в body размещать что бы когда до него загрузка дойдет вот тот адовый трэшак закончил исполняться. Хотя в особо тяжёлых случаях при первой загрузке страницы оно все равно не успевает и все ломается.

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

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

anonymous
()

вот ведь... про тип never - фигня в статье написана. это тип возвращаемого значения функции, которая никогда (!) не возвращает (а не «тип, которая возвращает функция, не возвращающая значения».

разница:

   function fn1() { // вот тут вот функция имеет тип ()=> void
     return;
   }

   function fn2() { // вот тут вот функция имеет тип ()=> never
     throw "Error";
   }

anonymous
()
Ответ на: комментарий от x3al

Спорно. Там где много параметров - обычно хеши передают.

Скорее имена опций. Тут наверное соглашусь, но ХЗ насколько это критично, чтобы тайпскрипт тянуть. Есть еще что-то подобное?

Vit ★★★★★
()
Ответ на: комментарий от Vit

Тайпскрипт может и хэши проверять на наличие нужных ключей.

x3al ★★★★★
()
Ответ на: комментарий от boo32

Скоро (или не очень) из JS получится C# их стараниями. И это больше хорошо, чем плохо

любят они взать что-то работающее и испоганить. зато мух налетит...

anonymous
()
Ответ на: комментарий от makoven

нативный es6 импорт уже есть, правда нету нативного намёка, как этот самый импорт подключить к html (извращенцев из whatwg с их растеканиями по дереву в расчёт не беру, хоть пока это и единственный способ не кидать js прямо в страницу)

anonymous
()
Ответ на: комментарий от Vit

А есть пример, что часто случается но можно отсечь только тайпскриптом

армию js-девелоперов, которые не будут коммитить в твой проект, узнав что он на эзотерическом язычке)

makoven ★★★★★
()
Ответ на: комментарий от makoven

пока только это https://whatwg.github.io/loader/ и его частные реализации типа systemjs бузят, что со стороны js всё готово, терь дело за html

anonymous
()
Ответ на: комментарий от anonymous

Мне вот интересно, а вы вообще смотрели на код, который генерирует тайпскрипт?

это все очень долго исполняется и рабочий код приходится куда то в body размещать что бы когда до него загрузка дойдет вот тот адовый трэшак закончил исполняться. Хотя в особо тяжёлых случаях при первой загрузке страницы оно все равно не успевает и все ломается.

Простите, што? А вы знаете что браузеры когда встречают тег script сначала выполняют код внутри него, а только затем продолжают эвалить остальную страницу?

так там весь код судя по его виду чем то сгенерирован

Я не смог прочитать скомпилированный код => код говно, да да.

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

Помогает, ещё как.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.