是否可以使用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
似乎没有涵盖这一点。
答案 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