Как стать автором
Обновить

Комментарии 13

 Спасибо за перевод. Только редакторской правки не хватает: все эти "такой как", "то что" вполне можно опустить.


Краткий пересказ: давайте сделаем в JS аннотации типов, как в Python.

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

Говорят, что TypeScript спроектирован таким образом, что JavaScript - просто подмножество TypeScript. А если так, то почему не перенести все фичи TypeScript оптом в JavaScipt и не сделать единый язык?

Например, потому, что TypeScript все еще активно развивается, и ломающие изменения есть почти в каждой новой версии. JavaScript, напротив, развивается очень консервативно, по принципу "don't break the Web".

Как минимум потому что придется транспилить из нового TypeScript в старый TypeScript для старых браузеров и чем это будет отличаться от того что есть сейчас?

Я люблю тайпскрипт, но этот пропоузал какой-то бред, кмк. Вводить "типы как комментарии" только чтобы не компилить TS - какой-то абсурд. Либо вводить типы как типы, либо ничего не менять. Завтра фейсбук скажет - давайте синтаксис JSX введем нативно, нам так хочется.

Я бы не был так категоричен.

Есть успешный опыт из Питона где также можно указать типы но это никак не влияет на исполнения кода.

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

Вижу два ключевых момента, к которым стоило бы придти:

  1. Внедрение нативного TS (или его подобия) наравне с JS, просто script lang другой, чтобы не мешалось.

  2. Переход WASM на AOT вместо JIT.

    В теории при решенном втором пункте первый уже не будет так актуален.

    Более того можно вообще весь JS в браузере транслировать в WASM и так гонять.

в wasm не может быть aot компиляции бай дизайн.

компилировать js в wasm это практически масло маслянное.

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

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

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

Если перейти по первой ссылке, то вроде уже stage 1, а не 0.

  • import type A from
  • import { type A } from
  • type A = method<B>
  • in, out в генериках
  • ...

Это из относительно недавних обновлений синтаксиса TS. К чему это я? TS довольно часто расширяет синтаксис языка. Если пойти по пути "игнорировать типы, чтобы избегать транспиляции", то придётся постоянно и JS парсер обновлять.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий