ECMAScript модули спроектированы неправильно?



В TypeScript 4.3 анонсировали автодополнение для импортов (это было ещё в конце мая). И это показалось мне очень забавным и всё руки не доходили написать об этом.



Идея простая: собрать все возможные экспорты и сделать по ним автокомплит. В деталях, конечно же, всё несколько сложнее. Можете почитать об этом в пул-реквесте.



А забавным мне показалось по следующей причине — в релизном блог-посте написано что-то в духе:

«а вот если бы мы писали

from "./module.js" import { func };

вместо

import { func } from "./module.js";

то ведь и проблемы с автодополнением не было бы!»



Это на самом деле полуправда, поскольку такое автодополнение явно ускоряет написание кода и позволяет не думать о том, как называется модуль — нужно помнить только название экспорта. Но меня это навело на мысль о том, что при проектировании и написании спецификации, судя по всему, никто не думал о том как будет работать автодополнение.



Я попытался найти какую-то информацию почему сперва import, а затем from, но ничего не вышло. Зато нашёл предложение proposal-from-import, но едва ли мы увидим какое-то развитие событий.