docs: зафиксировать известное ограничение проверки типов frontend
vue-tsc 0.35.0 (2022) шаблоны Vue практически не типизирует: build:prod проходит зелёной, не давая гарантии, которую обещает. Замер записан — на паре typescript@5.9 + vue-tsc@2.2 тот же код даёт около 155 ошибок в четырёх файлах. Обновление typechecker'а тянет vue 3.2 -> 3.5, а за ним element-plus, pinia и vue-router, поэтому вынесено в отдельную работу. На безопасность не влияет: уязвимые пакеты обновляются движением lockfile внутри объявленных диапазонов.
This commit is contained in:
@@ -111,6 +111,29 @@ Bun обновляется отдельно от остальных: оркес
|
||||
полного прохода `bun test → tsc → compile → приёмка на Debian`, а не строки в
|
||||
общем патче.
|
||||
|
||||
### Известное ограничение: проверка типов frontend почти ничего не проверяет
|
||||
|
||||
`pnpm run build:prod` выполняет `vite build && vue-tsc --noEmit`, но `vue-tsc`
|
||||
здесь версии `0.35.0` (2022 год) и шаблоны Vue практически не типизирует.
|
||||
Проверка проходит зелёной, не давая гарантии, которую обещает.
|
||||
|
||||
Замер сделан: на паре `typescript@5.9` + `vue-tsc@2.2` тот же исходный код даёт
|
||||
**около 155 ошибок типов** в четырёх файлах — почти все одного вида
|
||||
(`possibly 'undefined'` при обращении к необязательным полям модели конфига
|
||||
Hysteria в шаблоне) плюс несовместимость `DefaultRow` с `PeerVo` в слотах
|
||||
таблицы пиров.
|
||||
|
||||
Это не дефект безопасности и не блокер релиза: ошибки существуют в коде уже
|
||||
сейчас и ни на что в рантайме не влияют. Но обновление typechecker'а тянет за
|
||||
собой обновление `vue` (3.2 → 3.5, иначе `vue-tsc` 2.x не разбирает
|
||||
`JSX.IntrinsicElements`), а за ним — `element-plus`, `pinia` и `vue-router`.
|
||||
То есть это отдельная работа с собственной проверкой на живой панели, а не
|
||||
строка в security-патче.
|
||||
|
||||
Ограничение на безопасность не влияет: уязвимые пакеты frontend обновляются
|
||||
независимо от версии typechecker'а, движением lockfile внутри уже объявленных
|
||||
диапазонов (см. `pnpm.overrides` в `apps/frontend/package.json`).
|
||||
|
||||
### Проверка зависимостей на уязвимости
|
||||
|
||||
`tools/build/lib/security.sh` — обязательный шаг сборки между тестами админки и
|
||||
|
||||
Reference in New Issue
Block a user