API компилятора TypeScript: печатать общие ограничения с помощью checker.typeToString () - PullRequest
0 голосов
/ 12 июня 2018

Можно ли использовать 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 голосов
/ 12 июня 2018

Нет способа получить тип и ограничения напрямую.Вы можете получить ограничение универсального типа, а также распечатать тип ограничения и, соединяя его с ключевым словом 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 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...