API компилятора TypeScript применяет стандартные / встроенные преобразования для CompilerOptions к AST - PullRequest
1 голос
/ 25 марта 2020

Я хотел бы сделать проверку совместимости, например, 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? Есть ли способ сделать это без копирования кода преобразователя или использования внутренних функций? (Кстати: я кратко попробовал последнее, но на самом деле не смог заставить его работать)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...