Os tipos personalizados no TypeScript permitem que você crie seus próprios tipos de dados personalizados. Eles são úteis quando você deseja combinar vários tipos de dados em um tipo único e dar a ele um nome significativo.
Aqui está um exemplo de um tipo personalizado:
// Tipo personalizado para coordenadas
type Coordinate = {
x: number;
y: number;
};
// Função que calcula a distância entre duas coordenadas
function calculateDistance(pointA: Coordinate, pointB: Coordinate): number {
const dx = pointB.x - pointA.x;
const dy = pointB.y - pointA.y;
return Math.sqrt(dx * dx + dy * dy);
}
// Utilizando o tipo personalizado Coordinates
const point1: Coordinate = { x: 0, y: 0 };
const point2: Coordinate = { x: 3, y: 4 };
const distance = calculateDistance(point1, point2);
console.log(`Distance between points: ${distance}`);
type Coordinate
define um tipo personalizado chamado Coordinate
que representa uma coordenada no plano cartesiano. Ele possui duas propriedades: x
e y
, ambas do tipo number
, que representam as coordenadas horizontal e vertical, respectivamente.function calculateDistance(pointA: Coordinate, pointB: Coordinate): number { ... }
é uma função que calcula a distância entre duas coordenadas pointA
e pointB
passadas como argumentos. A função utiliza a fórmula de distância Euclidiana, que é a distância direta entre dois pontos em um plano cartesiano.const point1: Coordinate = { x: 0, y: 0 };
e const point2: Coordinate = { x: 3, y: 4 };
são declarações de variáveis que utilizam o tipo personalizado Coordinate
para representar coordenadas. point1
representa as coordenadas (0, 0) e point2
representa as coordenadas (3, 4).const distance = calculateDistance(point1, point2);
chama a função calculateDistance
com point1
e point2
como argumentos para calcular a distância entre esses pontos e armazena o resultado na variável distance
.console.log(
Distance between points: ${distance});
exibe a distância calculada no console.Uma interface em TypeScript é uma maneira de definir um contrato ou um conjunto de regras que um objeto deve seguir. É como um contrato que especifica quais propriedades (campos) e métodos (funções) um objeto deve ter. As interfaces são frequentemente usadas para definir a forma de objetos em seu código.
Aqui está um exemplo de uma interface simples:
**// Interface para representar um carro
interface Car {
brand: string;
model: string;
year: number;
startEngine: () => void;
}
// Função que recebe um objeto do tipo Car
function drive(car: Car): void {
console.log(`Driving ${car.brand} ${car.model} - ${car.year}`);
car.startEngine();
}
// Implementação da interface Car
const myCar: Car = {
brand: "Toyota",
model: "Corolla",
year: 2022,
startEngine() {
console.log("Engine started!");
}
};
// Chamada da função drive com o objeto myCar
drive(myCar);**
interface Car { ... }
: Define uma interface chamada Car
que descreve a estrutura esperada de um objeto que representa um carro. Ela possui quatro propriedades: brand
(marca), model
(modelo), year
(ano) e startEngine
(uma função que não recebe argumentos e não retorna nada).function drive(car: Car): void { ... }
: Declara uma função chamada drive
que recebe um parâmetro chamado car
do tipo Car
. Essa função não retorna nada (void
). Ela exibe no console informações sobre o carro, incluindo marca, modelo e ano, e depois chama a função startEngine
do objeto car
para iniciar o motor.const myCar: Car = { ... }
: Cria um objeto myCar
que implementa a interface Car
. Ele contém valores para as propriedades brand
, model
, year
, e a função startEngine
. Este objeto representa um carro específico, no caso, um Toyota Corolla de 2022.drive(myCar);
: Chama a função drive
com o objeto myCar
como argumento. Isso resulta na exibição das informações do carro no console e na chamada da função startEngine
do objeto myCar
.