Я хотел бы иметь возможность узнать, изменились ли типы в файле объявления TypeScript с момента последней компиляции. Некоторые ложные срабатывания допустимы (говорят, что типы изменились, когда они этого не сделали), но нельзя сказать, что ничего не изменилось, когда что-то изменилось.
Для .d.ts без импорта я мог бы провести сравнение строк между старым .dts и новым .d.ts.
Но когда у .d.ts есть импорт, его значение может зависеть от того, что находится в других файлах:
import { OtherType } from "./other"
export type Wrapped = { other: OtherType }
В этом случае я мог бы выполнить рекурсию и сериализовать Wrapped
, а затем сравнить сериализованные представления. Но с рекурсивными типами все усложняется.
Для номинальных типов, я думаю, мне придется соотнести NodeIds или что-то в этом роде.
Есть ли что-то в API компилятора TS, что уже делает это, или альтернативный подход к решению проблемы?