¿Qué significa encerrar una clase entre corchetes angulares "<>" en TypeScript?

Soy muy nuevo en TypeScript y me encanta, especialmente lo fácil que es hacer POO en Javascript. Sin embargo, estoy atascado en tratar de descubrir la semántica cuando se trata de usar corchetes angulares.

De sus documentos, he visto varios ejemplos como

interface Counter {
    (start: number): string;
    interval: number;
    reset(): void;
}

function getCounter(): Counter {
    let counter = <Counter>function (start: number) { };
    counter.interval = 123;
    counter.reset = function () { };
    return counter;
}

y

interface Square extends Shape, PenStroke {
    sideLength: number;
}

let square = <Square>{};

Tengo problemas para entender lo que esto significa exactamente o la forma de pensarlo / entenderlo.

¿Podría alguien por favor explicármelo?

Respuestas a la pregunta(2)

Su respuesta a la pregunta