O propósito desse guia é te ensinar como escrever um arquivo de definição de alta qualidade. A estrutura desse guia exibe a documentação de uma API, juntamente com amostras de uso e explicações de como escrever a declaração correspondente.
Esses exemplos são ordenados por ordem crescente aproximada de complexidade.
Objetos com Propriedades
Documentação
A variável global
minhaLibpossui uma funçãocriaCumprimentopara criar saudações, e uma propriedadenumeroDeCumprimentosindicando o numero de cumprimentos feitos ate ali.
Código
tslet resultado = minhaLib.criaCumprimento("Olá, mundo");console.log("O cumprimento computado é:" + resultado);let count = minhaLib.numeroDeCumprimentos;
Declaração
Use declare namespace para descrever tipos ou valores acessados via notação por ponto.
tsdeclare namespace minhaLib {function criaCumprimento(s: string): string;let numeroDeCumprimentos: number;}
Funções Sobrecarregadas
Documentação
A função pegaFerramenta aceita um número e retorna uma Ferramenta, ou aceita uma string e retorna um array de Ferramentas.
Código
tslet x: Ferramenta = pegaFerramenta(43);let arr: Ferramenta[] = pegaFerramenta("todas");
Declaração
tsdeclare function pegaFerramenta(n: number): Ferramenta;declare function pegaFerramenta(s: string): Ferramenta[];
Tipos Reutilizáveis (Interfaces)
Documentação
Ao especificar uma saudação, você deve passar um objeto
ConfiguracoesCumprimento. Esse objeto tem as seguintes propriedades:1 - cumprimento: String obrigatória
2 - duracao: Comprimento de tempo opcional (em milissegundos)
3 - cor: String opcional, ex: ‘#ff00ff’
Código
tscumprimenta({cumprimento: "olá mundo",duracao: 4000});
Declaração
Use uma interface para definir um tipo com propriedades.
tsinterface ConfiguracoesCumprimento {cumprimento: string;duracao?: number;cor?: string;}declare function cumprimenta(setting: ConfiguracoesSaudacao): void;
Tipos reutilizáveis (Tipo Aliases)
Documentação
Em qualquer lugar que um cumprimento é esperado, você pode prover uma
string, uma função retornando umastring, ou uma instancia deCumprimentador.
Código
tsfunction pegaCumprimento() {return "oopa";}class MeuCumprimentador extends Cumprimentador {}cumprimenta("olá");cumprimenta(pegaCumprimento);cumprimenta(new MeuCumprimentador());
Declaração
Você pode usar um alias para fazer uma abreviação para um tipo:
tstype ComoUmCumprimentador = string | (() => string) | MeuCumprimentador;declare function cumprimenta(g: ComoUmCumprimentador): void;
Organizando Tipos
Documentação
O objeto
cumprimentadorpode passar log para um arquivo ou mostrar um alerta. Você pode prover LogOptions para.log(...)e opções de alerta para.alert(...)
Código
tsconst g = new Cumprimentador("Olá");g.log({ verbose: true });g.alert({ modal: false, title: "Cumprimento Atual" });
Declaração
Use namespaces para organizar tipos.
tsdeclare namespace CumprimentoLib {interface LogOptions {verbose?: boolean;}interface AlertOptions {modal: boolean;title?: string;color?: string;}}
Voce também pode criar namespaces aninhados em uma declaração:
tsdeclare namespace CumprimentoLib.Options {// Faz referência via CumprimentoLib.Options.Loginterface Log {verbose?: boolean;}interface Alert {modal: boolean;title?: string;color?: string;}}
Classes
Documentação
Você pode criar um cumprimentador ao instanciar o objeto
Cumprimentador, ou ao criar um cumprimentador customizado ao estendê-lo.
Código
tsconst MeuCumprimentador = new Cumprimentador("Olá, mundo");MeuCumprimentador.cumprimento = "oopa";MeuCumprimentador.mostraCumprimento();class CumprimentadorEspecial extends Cumprimentador {constructor() {super("Cumprimentador muito especial");}}
Declaração
Use declare class para descrever uma classe ou um objeto semelhante a classe.
Classes também podem possuir propriedades e métodos assim como um construtor.
tsdeclare class Cumprimentador {constructor(cumprimento: string);cumprimento: string;mostraCumprimento(): void;}
Variáveis Globais
Documentação
A variável global
foocontém o numero de ferramentas atual.
Código
tsconsole.log("Metade do numero de ferramentas é " + foo / 2);
Declaração
Use declare var para declarar variáveis.
Se a variável é apenas-leitura, você pode usar declare const.
Você também pode usar declare let se a variável é de escopo-fechado.
ts/** O numero de ferramentas atual */declare var foo: number;
Global Functions
Documentação
Você pode chamar a função
cumprimentacom uma string para mostrar um cumprimento para o usuário.
Código
tscumprimenta("olá, mundo");
Declaração
Use declare function para declarar funções.
tsdeclare function cumprimenta(cumprimento: string): void;