¿Cómo determino el tipo de resultado de un objeto TypeScript.Expression?

Al trabajar con el árbol de sintaxis abstracta de TypeScript, ¿cómo determino el tipo de resultado de un objeto TypeScript.Expression?

Estoy usando TSLint e intento encontrar invocaciones de setTimeout que no pasen un objeto de tipo Function como primer parámetro. Por ejemplo, en el siguiente código, quiero saber que se invocó setTimeout y que el primer parámetro es una función.

// function that produces a function
var createFunction : () => (() => void) = () => {}; 
// result of createFunction() should be of type function
setTimeout(createFunction());

El AST se alinea así:

setTimeout -> TypeScript.CallExpressioncreateFunction () -> TypeScript.Expression

Intenté usar LanguageService para determinar el tipo de Expresión, pero ninguna de las siguientes API me da lo que necesito:

languageServices.getQuickInfoAtPositionlanguageServices.getDefinitionAtPositionlanguageServices.getTypeDefinitionAtPosition

¿Algunas ideas?

Respuestas a la pregunta(1)

Su respuesta a la pregunta