Я делаю инструмент командной строки nodejs, который автоматизирует переименование символов в файлах Typescript, используя языковые службы Typescript.
Вы говорите инструменту: переименуйте все символы этого типа в этот символ. Как и resharper, он также будет переименовывать локальные переменные, свойства и т. Д. Поскольку он позволяет переименовывать сразу несколько символов, вы также можете поменять местами два имени символа, не требуя промежуточного временного уникального имени (например, переименовать Foo в Bar и наоборот).
Мне пришлось сделать частную функцию getSymbolInfoAtPosition в языковой службе общедоступной, чтобы сделать эту работу общедоступной, чтобы я мог получать информацию PullSymbol.
В настоящее время он обнаруживает только точные совпадения имени + типа, вызывая getNameAndTypeName в PullSymbol, но я хотел бы выполнить структурно совместимые совпадения.
В C # это просто, поскольку у Type есть метод IsAssignableFrom.
Кто-нибудь знает, как можно использовать компилятор Typescript как услугу, чтобы определить, является ли один PullSymbol структурно совместимым с другим PullSymbol?
Большое спасибо, Питер Фервивелен