TypeScript编译器API:使用checker.typeToString()打印通用约束

时间:2018-06-12 07:29:30

标签: typescript typescript-compiler-api

是否可以使用checker.typeToString()来打印泛型类型约束?

class Item {}
class Container<T extends Item> {
  public item: T;
}

const type = checker.getTypeAtLocation( /** AST node of 'item' property */ );
checker.typeToString( type ); // returns 'T'

我希望看到返回值'Item'TypeFormatFlags似乎没有涵盖这一点。

1 个答案:

答案 0 :(得分:0)

无法直接获取类型和约束。您可以获得泛型类型的约束,并且可以打印约束的类型,并将其与extends关键字放在一起,可以获得您想要的内容。

const type = checker.getTypeAtLocation( paramNode );
let constraintType = type.getConstraint();
if(constraintType == null) continue;
let genericType = checker.typeToString(type); // T 
let genericConstraintType = checker.typeToString(constraintType);  // Item
console.log(`${genericType} extends ${genericConstraintType}`); // put it together manually