O que significa incluir uma classe entre colchetes angulares "<>" no TypeScript?

Eu sou muito novo no TypeScript e estou adorando muito, especialmente a facilidade de fazer OOP em Javascript. No entanto, estou preso em tentar descobrir a semântica quando se trata de usar colchetes angulares.

Nos documentos deles, eu vi vários exemplos 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;
}

e

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

let square = <Square>{};

Estou tendo problemas para entender o que isso significa exatamente ou a maneira de pensar / entender.

Alguém poderia me explicar isso?

questionAnswers(2)

yourAnswerToTheQuestion