小编Sim*_*lis的帖子

TypeChecker API:如何查找函数的推断类型参数?

给定具有推断类型参数的 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)

typescript typescript-compiler-api

7
推荐指数
1
解决办法
1173
查看次数