Используя API компилятора, мне нужно получить доступ к реальному типу явного параметра 'this' из ts.Signature.
// Code being compiled
interface Fn1 {
(this: Foo): void;
}
const fn1: Fn1 = () => {};
interface Fn2<T> {
(this: T): void;
}
const fn2: Fn2<void> = () => {};
// Compiler API
function visitVariableDeclaration(node: ts.VariableDeclaration, checker: ts.TypeChecker) {
const type = checker.getTypeAtLocation(node.type);
const signatures = checker.getSignaturesOfType(type, ts.SignatureKind.Call);
const signature = signatures[0];
// How do I access type of 'this' on signature?
}
В настоящее время я могу вызвать getDeclaration () и посмотреть напараметры, которые работают на Fn1.Но это для Fn2, это не разрешит 'T' в 'void'.При трассировке с помощью отладчика я вижу, что в подписи есть элемент thisParameter, который, кажется, имеет то, что мне нужно.Но это не публично раскрывается через интерфейс, поэтому я не могу от этого зависеть.Есть ли способ правильно получить доступ к типу?