Я хотел бы сделать проверку совместимости, например, eslint-plugin-compat
, но для TypeScript, чтобы он был более надежным, потому что у меня есть доступ к типам переменных. По сути, я хотел бы проверить такие вещи, как использование определенных функций и синтаксиса, и проверить, совместим ли он с определенными браузерами. Это кажется не слишком сложным, особенно при использовании ts-morph
, но я сталкиваюсь с проблемой: TypeScript может преобразовать множество синтаксических и встроенных вызовов функций, так что он поддерживается старыми браузерами путем установки target
опция компилятора для чего-то вроде ES2015
, поэтому, когда я использую функцию, которая может не поддерживаться некоторыми браузерами, может быть, в результате JS функция в конце концов не используется, поэтому предупреждение не должно генерироваться. Теперь это здорово, но синтаксическое дерево (AST), которое я получаю с помощью API компилятора / ts-morph, еще не преобразовано таким образом, поэтому мой инструмент подумал бы, что какая-то функция используется, тогда как в результирующем JS это не так .
Я встречал этот ответ , обсуждая пользовательские преобразования, но я хочу выполнить встроенные встроенные преобразователи (учитывая цель et c.). Я нашел код, который решает, какие преобразователи применять в исходном коде TypeScript в compiler/transformer.ts
и, например, преобразователь для ES2015 в compiler/transformers/es2015.ts
. Теперь проблема в том, что все эти функции предназначены только для маркированного внутреннего использования.
Так что мой вопрос: Как мне все же выполнить код анализа на преобразованном AST? Есть ли способ сделать это без копирования кода преобразователя или использования внутренних функций? (Кстати: я кратко попробовал последнее, но на самом деле не смог заставить его работать)