Комментарии 19
Посмотрите в сторону https://github.com/cevek/ttypescript
а зачем в 2020 году его использовать, если та же функциональность появилась в самом TS?
https://github.com/Microsoft/TypeScript/wiki/Writing-a-Language-Service-Plugin
Не появилась, несмотря на многочисленный уговоры, как пример — https://github.com/microsoft/TypeScript/issues/16607.
Задачу вполне можно было решить разделением бэкэнда и фронтеда (просто запустив их раздельно). Раньше тоже объединял GraphQL API и Nuxt.js в один процесс, неудобств значительно больше, чем выгоды от их объединения.
А проверку типов во всем коде можно выполнять на precommit и в ci
А в процессе "полёта мысли" да он неудобен.
В процессе полёта мысли можно начать складывать слонов с табуретками и далеко не сразу это заметить получая неверный результат, выглядящий вполне корректно. Потери времени в результате могут быть значительно больше. Ну и плюс отсутствие автодополнения. Чистый js может выигрывать только когда совсем уж мелкую утилитную функцию на пару строк нужно быстренько сбацать.
TS, на мой взгляд, слишком медленный и неудобный для разработки. При каждом изменении проверять все типы — значит блокировать полет мысли при разработке и замедлять тестирование работы в реальном окружении.
Медленный в каком смысле? Медленно компилирует или медленнее и неудобнее идет разработка, потому что надо прописывать типы? Необязательно ведь чтобы при каждом изменении происходила проверка всех типов, у tsc есть инкрементальная сборка и watch-mode, работает очень быстро.
Поэтому я все же предпочитаю при кодинге применять babel с плагином, вырезающим типы, а в качестве хелпера использовать встроенные в IDE подсказки тайпскрипта. Работает намного быстрее и не блокирует.
Подход интересный! Т.е. получается, проверка типов у вас в процессе разработками есть средствами IDE? Речь идет про разработку для фронта или под ноду? Можно ссылку на плагин, который вы используете?
Это я и назвал «неблокирующим режимом», который помогает, а не мешает. Использую как для разработки для ноды, так и для фронта
Ошибки tsc не препятствуют выдаче javascript-кода. Т.е. даже неверный код вида const x: number = "foobar";
все равно скомпилируется, но не протайпчекается. У вас наверняка включена опция noEmitOnError — отключите ее.
Здравствуйте! Спасибо за статью! У меня такой вопрос. Вот я создал объект с программой:
const program = createProgram(['./src/index.ts'], compilerOptions, compilerHost);
Почему в исходниках
program.getSourceFiles()
нет файлов *.ts ? Я посмотрел - там только файлы *.d.ts причем из node_modules, а вот файлов моего проекта из каталога src там нет. А я их хотел видеть в sourceFiles
Typescript Compiler API: возьми управление компилятором в свои руки