Type aliases can’t be circular, but interfaces can. This accomplishes what you want:
type MyTuple<T> = [string, { [key: string]: string }, T[]];
interface Node extends MyTuple<Node> { }
Type aliases can’t be circular, but interfaces can. This accomplishes what you want:
type MyTuple<T> = [string, { [key: string]: string }, T[]];
interface Node extends MyTuple<Node> { }