Комментарии 13
Спасибо за перевод. Только редакторской правки не хватает: все эти "такой как", "то что" вполне можно опустить.
Говорят, что TypeScript спроектирован таким образом, что JavaScript - просто подмножество TypeScript. А если так, то почему не перенести все фичи TypeScript оптом в JavaScipt и не сделать единый язык?
Например, потому, что TypeScript все еще активно развивается, и ломающие изменения есть почти в каждой новой версии. JavaScript, напротив, развивается очень консервативно, по принципу "don't break the Web".
Как минимум потому что придется транспилить из нового TypeScript в старый TypeScript для старых браузеров и чем это будет отличаться от того что есть сейчас?
Я люблю тайпскрипт, но этот пропоузал какой-то бред, кмк. Вводить "типы как комментарии" только чтобы не компилить TS - какой-то абсурд. Либо вводить типы как типы, либо ничего не менять. Завтра фейсбук скажет - давайте синтаксис JSX введем нативно, нам так хочется.
Вижу два ключевых момента, к которым стоило бы придти:
Внедрение нативного TS (или его подобия) наравне с JS, просто script lang другой, чтобы не мешалось.
Переход WASM на AOT вместо JIT.
В теории при решенном втором пункте первый уже не будет так актуален.
Более того можно вообще весь JS в браузере транслировать в WASM и так гонять.
статическая типизация сейчас нужна, прежде всего для того, чтобы разрешить массу проблем оптимизирующего компилятора, который сейчас запросто может загнать ваш код в ситуацию, когда он(код) будет работать значительно хуже чем если бы работы компилятора не было вовсе.
и большая часть этой вакханалии связана с попыткой отслеживать типы на основе собираемой статистики о коде. Введение статической типизации одним махом облегчает жизнть компилятору, и освобождает массу ресурсов.
уже сейчас есть патчи к v8, которые наглядно демонстрируют все прелести таких решений.
Если перейти по первой ссылке, то вроде уже stage 1, а не 0.
import type A from
import { type A } from
type A = method<B>
in
,out
в генериках- ...
Это из относительно недавних обновлений синтаксиса TS. К чему это я? TS довольно часто расширяет синтаксис языка. Если пойти по пути "игнорировать типы, чтобы избегать транспиляции", то придётся постоянно и JS парсер обновлять.
Предложение о синтаксисе типов в JavaScript