给定具有推断类型参数的 CallExpression,有什么方法可以找到这些类型参数是什么?
示例代码:
class SomeClass {
public someMethod<T>(arg: T): void { }
}
// What is the inferred type of T in this call?
someClass.someMethod(7);
Run Code Online (Sandbox Code Playgroud)
找到代码中显式分配的类型参数很容易,但我不知道如何找到推断的内容。
function inferTypeArguments(node: ts.CallExpression, typeChecker: ts.TypeChecker) {
node.typeArguments; // is empty
const signature = typeChecker.getResolvedSignature(node);
signature['typeArguments']; // is also empty
// This returns "<number>(arg: number): void"
// so I know that the typeChecker has the right information,
// but I would really like a ts.Type[]
typeChecker.signatureToString(signature, node, ts.TypeFormatFlags.WriteTypeArgumentsOfSignature)
}
Run Code Online (Sandbox Code Playgroud)