TypeScript: Guia para Declarações de Tipos de Ambiente

Criando arquivos .d.ts de qualidade!

Image for post
Image for post
Créditos da imagem Okazuki

🌟 Créditos

Tipos de Ambiente

/**
* Orienta o bico de água e joga água por 30 segundos
* @param theta ângulo de rotação horizontal do bico
* @param phi ângulo vertical do bico
* @param pressure pressão da água
*/
async function extinguish(theta, phi, pressure) {
await aimHose(theta, phi);
await sprayWater(pressure);
}
export default extinguish;
// firetruck.d.ts
declare function extinguish(theta: number,
phi: number,
pressure: number): Promise<void>;
export default extinguish;
Image for post

DefinitelyTyped

// Type definitions for firetruck 1.3
// Project: https://github.com/firetruck/firetruck#readme
// Definitions by: Mike North<https://github.com/mike-north>
// TypeScript Version: 2.4

Dicas gerais para escrever boas declarações de tipos

declare function generateId(): string | number;
let id = '' + generateId ();
let id = generateId();
if (typeof id === ‘string’) { // não é necessário

}
let id = generateId();
if (typeof id === ‘string’) {
id.toLowerCase(); // 💥 Erro em tempo de execução
}
declare function setDisabled(elem: HTMLInputElement): void;
setDisabled(myTextArea as any);

Testes

const result: Promise<any> = extinguish(30, 20, 100); // ✅
const result: Promise<void> = extinguish(30, 20, 100); // ✅

dtslint

extinguish(30, 20, 100); // $ExpectType Promise<void> ✅
extinguish(30, 20, 100).then(data => { 
data.abc // $ ExpectError ✅
});

Written by

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store