TypeScript, sendo uma extensão do JavaScript, introduz alguns operadores e recursos que não estão presentes no JavaScript puro. Aqui estão alguns dos operadores e construções de tipos exclusivos do TypeScript, com exemplos.

Operador de Acesso Seguro (Safe Navigation Operator) ?.

Este operador permite ler o valor de uma propriedade localizada em um objeto profundo sem ter que verificar explicitamente cada referência intermediária.

let x = foo?.bar; // Acessa foo.bar, mas não lança um erro se foo é null ou undefined

Operador de Afirmação de Tipo

Em TypeScript, você pode usar a afirmação de tipo para especificar explicitamente que uma variável ou expressão tem um tipo específico.

let myCanvas = document.getElementById("myCanvas") as HTMLCanvasElement;

Tipo 'never'

O tipo never é usado para funções que nunca retornam um valor (por exemplo, que sempre lançam um erro).

function error(message: string): never {
    throw new Error(message);
}

Tipos de Tuplas

TypeScript permite que você especifique um array com um número fixo de elementos cujos tipos são conhecidos, mas não necessariamente o mesmo.

let x: [string, number];
x = ["hello", 10]; // OK

Modificador de Acesso private e protected

TypeScript introduz modificadores de acesso private e protected para propriedades de classe.

class Animal {
    private name: string;

    constructor(theName: string) {
        this.name = theName;
    }
}

Decoradores

Os decoradores são uma forma de adicionar anotações e metaprogramação sintática às declarações de classe e membros.

function sealed(constructor: Function) {
    // ... código do decorador ...
}

@sealed
class Greeter {
    // ... código da classe ...
}

Tipos Condicionais

Os tipos condicionais permitem expressar operações não uniformes em tipos.

type Check<T> = T extends string ? "String" : "Not a String";

Mapped Types

Os tipos mapeados permitem criar novos tipos com base em transformações de propriedades de um tipo existente.

type ReadOnly<T> = { readonly [P in keyof T]: T[P]; };

Esses são apenas alguns dos recursos e operadores que o TypeScript oferece além do JavaScript. Eles permitem uma programação mais robusta e tipos mais expressivos, facilitando a manutenção e o desenvolvimento de aplicativos complexos.