This isn't written in TypeScript. It seems to be interpreted as meaning "is a subtype of".
For instance, if we have
interface Literal <: Expression
, it signifies that a
Literal
falls under the category of
Expression
. Similarly,
interface Expression <: Node
indicates that an
Expression
belongs to the type of
Node
. (In the abstract syntax tree, every element is categorized as some kind of Node)
If there are multiple identifiers on the right side, like:
interface FunctionExpression <: Function, Expression
this implies that the left part represents a relationship with both types (for example, a FunctionExpression
is considered both a Function
node and an Expression
node).