Interface e Type
Sintaxe Comum
No TypeScript, interfaces definem a estrutura de objetos, especificando os nomes e tipos de propriedades ou métodos que um objeto deve ter. A sintaxe comum para definir uma interface no TypeScript é a seguinte:
interface InterfaceName { property1: Type1; // ... method1(arg1: ArgType1, arg2: ArgType2): ReturnType; // ...}Similarmente para definição de tipo:
type TypeName = { property1: Type1; // ... method1(arg1: ArgType1, arg2: ArgType2): ReturnType; // ...};interface InterfaceName ou type TypeName: Define o nome da interface.
property1: Type1: Especifica as propriedades da interface junto com seus tipos correspondentes. Múltiplas propriedades podem ser definidas, cada uma separada por ponto e vírgula.
method1(arg1: ArgType1, arg2: ArgType2): ReturnType;: Especifica os métodos da interface. Métodos são definidos com seus nomes, seguidos por uma lista de parâmetros entre parênteses e o tipo de retorno. Múltiplos métodos podem ser definidos, cada um separado por ponto e vírgula.
Exemplo de interface:
interface Person { name: string; age: number; greet(): void;}Exemplo de tipo:
type TypeName = { property1: string; method1(arg1: string, arg2: string): string;};No TypeScript, tipos são usados para definir a forma dos dados e impor verificação de tipos. Existem várias sintaxes comuns para definir tipos no TypeScript, dependendo do caso de uso específico. Aqui estão alguns exemplos:
Tipos Básicos
let myNumber: number = 123; // tipo numberlet myBoolean: boolean = true; // tipo booleanlet myArray: string[] = ['a', 'b']; // array de stringslet myTuple: [string, number] = ['a', 123]; // tuplaObjetos e Interfaces
const x: { name: string; age: number } = { name: 'Simon', age: 7 };Tipos Union e Intersection
type MyType = string | number; // Tipo Unionlet myUnion: MyType = 'hello'; // Pode ser uma stringmyUnion = 123; // Ou um número
type TypeA = { name: string };type TypeB = { age: number };type CombinedType = TypeA & TypeB; // Tipo Intersectionlet myCombined: CombinedType = { name: 'John', age: 25 }; // Objeto com propriedades name e age