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)

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

Но речь идет о разработке нового языка, а мы получаем клон C# 15-летрней давности.

Я видимо опять что-то не понял

Именно так.

вижу необьяснимый взрыв метана.

БЕГИ!

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

люди просто думали жопой вместо головы, когда втащили yield/* без async/await

Они думали о более общих принципах нежели async/await

pavel-g
()
Ответ на: комментарий от tailgunner

Я видимо опять что-то не понял

Именно так.

:(

Может укажете?

Укзать на сходство вы забыли и не смогли?

БЕГИ!

Вы меня взрывом метана испугать хотите?
0_0

Как интересно!

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

Не совсем понятно почему.

Ну например, когда мы хотим извлечь нужное значение из конфига, а его там нет. Выхода тут два: либо возвращать null, что есть зло и нарушает типобезопасность, либо возвращать Option.

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

В понимании дотнета, любой ссылочный тип можешь принимать значение null, а тип-значение просто будет заполнен нулями, но для них есть структура Nullable<T>. Создатели тс-та, по понятным причинам, руководствовались аналогичной логикой. Причем стоит не забывать, что в дотнете нулл - это значение, тогда как жс-е - это отдельный тип, отсюда и выходит такое недопонимание.

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

Это ж в шарпе? Я про тс/жс говорил

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

Думали о великом. Жопой. Так обычно и бывает. Классы без декораторов втащили примерно по тому же принципу. Стоит попытаться обернуть метод класса в co, и это сразу станет понятно.

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

Укзать на сходство вы забыли и не смогли?

Перестал видеть смысл.

Вы меня взрывом метана испугать хотите?

Упаси ТНБ. Но если вокруг тебя взрывается метан, лучше уйди в безопасное место.

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

Тот что сделал - мелкий.
Пофиг на мелком - в том смысле что профит от проверок убивается тем, что писать больше нужно и программисты учатся.

Но когда научатся и проект чуть больше, по моему личному мнению, профит есть.

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

Перестал видеть смысл.

Это печально.

Упаси ТНБ. Но если вокруг тебя взрывается метан, лучше уйди в безопасное место.

Ваш взрыв от меня далеко, уверен, не достанет ;)

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

кажется, что люди просто думали жопой вместо головы, когда втащили yield/* без async/await.

Нестандартный yield был в firefox до ES6 и работает довольно похоже на те же питоны. А вообще — ES6-генераторы вполне стыкуются с появлением for..of и Symbol.iterator.

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

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

Хз,

А в чем разница в возврате типа или null в других ЯП?

В описании все завязано на монады, нужно видимо теорию подтянуть.

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

В описании все завязано на монады, нужно видимо теорию подтянуть.

Неплохо бы. Монады уже даже в джаву завезли.

Zenom ★★★
()

Похоже большая часть местных обитателей не знает зачем TS нужен и какие проблемы решает, советуя продолжать использовать ES. ES идет другой дорогой, хипстерской, а не инженерной, тк ES6 как и ES7 по сути ничего более чем синтаксический сахар и намеков на типизацию в будующих стандартах нет. TS позволяет работать с большой кодовой базой без такой головной боли как это было бы при использовании ES и модной но не годной для реальных задач «функциональщины», позволяет задать жесткую структуру поломка которой будет сразу видна, а не в рантайме.

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

Угу, нет в жизни щастья. Я на своих поделках прикидывал как попробовать чтобы толк был, в итоге плюнул.

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

Угу, он у них похоже висел со старых запасов жира времён with, когда трава была крепче. Просто я тут пытался классы заюзать для общего развития и обплевался. То что на прототипах выглядит как

foo.prototype.bar = co.wrap(function* () {
  yield...
  yield...
})
на классах надо либо внутри метода функцией оборачивать и this биндить, либо в конструкторе манкипатчить. Потому что нема ни async ни декораторов. Когда подобного много - выглядит абсолютно психоделично. На этом мое знакомство с классами закончилось :)

Vit ★★★★★
()
Последнее исправление: Vit (всего исправлений: 1)

Все эти костыли ненужны. ECMAscript теперь бурно развивается, а эти костыли приходят и уходят.

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

TS

Flow конечно. Как можно серьезно относиться к тайпчекуру которому non-nullable типы завезли вчера.

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

Взрыв видишь ты, а не я.

Взрыв в/на ЛОРе видно издалека.
Хотя вы же написали, что смысл уже не видите.

А все остальные какой ещё смысл могут увидеть в

Потому что выпускники индусских ПТУ о них не слышали.

Как не взрыв метана?

Он близко к тебе, так что будь осторожен.

Подкрадываетесь?

Нуну

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

Их и в скалу завезли, но я так и не нашёл время разобраться :)

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

Клиент возжелал и проект очень большой.

Доживу - расскажу :)

grim ★★☆☆
() автор топика

Читаю про flow и начинаю подозревать в TS еще одно типично микрософтовское поделие - переиначенная чужая идея, совместимая с другими ровно настолько, чтобы не выглядеть прямой попыткой embrace, extend and extinguish.

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

А все остальные какой ещё смысл могут увидеть в

Потому что выпускники индусских ПТУ о них не слышали.

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

испугать хотите?

Подкрадываетесь?

Да успокойся уже.

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

Ну, они могут понять это как «дизайнер языка не знаком с концепциями, которые уже стали общепринятыми».

Да ладно, вы бы не стали продолжать багеты по поводу того что Тайпскрипт копия С#, хотя в них нет ничего общего кроме автора ;)

Да успокойся уже.

Да ладно, тайганера слегка подначить ведь не запрещает свод правило ЛОРа? ;)

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

Да ладно, вы бы не стали продолжать багеты по поводу того что Тайпскрипт копия С#, хотя в них нет ничего общего кроме автора ;)

O_o херасе. Проблема не в том, что JS стал похож на C# (это как раз хорошо, потому что JS убог изначально, и даже C# лучше него), а в том, что JS стал похож на язык 15-летней давности. А объяснение этому - то, что сам Хейделсберг устарел. В 2000 году смотреть на С++ и Java как на образцы проектирования языков - это приговор.

испугать хотите?
Подкрадываетесь?

Да успокойся уже.

Да ладно, тайганера слегка подначить ведь

А, так это подначка, а не паранойя? Ну тогда окей.

tailgunner ★★★★★
()

Тип never

Кто знаком с TS, обьясните почему такое странное название, могли бы взять общепринятое слово вроде none или unit, а то этот never даже по смыслу не подходит.

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

Што?

Ты помниццо вещал, что тайпскрипт самая соль, не то што сраный жабаскрипт.

JS + flowtype - это уже не JS.

Типа перепрыгнем пропасть в два прыжка, потому что в один стремно :) . Пока соберешься, в жабаскрипт уже дотырят вкусняшки из питона и портанут numpy, а в webassembly начнут конпелять rust.

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

Ты помниццо вещал, что тайпскрипт самая соль, не то што сраный жабаскрипт.

Я вещал, что TS лучше JS, потому что статически типизированный. И я до сих пор так считаю.

JS + flowtype - это уже не JS.

Типа перепрыгнем пропасть в два прыжка, потому что в один стремно :)

Што^2?

Пока соберешься

Я лично и не собираюсь, но у меня есть подчиненные.

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

O_o херасе. Проблема не в том, что JS стал похож на C#

Похож?
херасе!
В чем вы, я так понимаю рассказать не можете :(

А, так это подначка, а не паранойя?

Хехе, да у вас мания величия, раз думаете что вас кто-то боится ;)

grim ★★☆☆
() автор топика
Ответ на: комментарий от pftBest

На басурманском складно получается:
- function returns never
в то время как none, void а тем более unit имеют другую смысловцю нагрузку.

PS
Это мои личные измышения, почему назвали never я не нашёл, хотя и искал недолго.

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

Потому что нема ни async ни декораторов.

https://www.typescriptlang.org/docs/handbook/decorators.html

А официально и то и другое в 2.1 https://github.com/Microsoft/TypeScript/wiki/Roadmap

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

Не, с транспилером любой дурак сможет. Так я могу хоть es8 привернуть.

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

Хехе, да у вас мания величия, раз думаете что вас кто-то боится ;)

Не-а. Мне вообще неприятно быть объектом твоих фантазий.

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

Не-а

Ну и хорошо.

А чем Typescript на C# так сильно похож расскажете?

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

Мммм... личный опыт есть? Интересут, так сказать, впечатления.

Например, если толпа идиотов, им вообще нельзя яваскрипт давать. А если малая группа одарённых и нормальный coding style?

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

Похоже большая часть местных обитателей не знает зачем TS нужен

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

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