타이프스크립트 e sua palavra-chave "type"

Não é novidade que o Typescript é um superset que veio para trazer conceitos de Orientação a Objeto para a linguagem Javascript. Contudo, algumas palavras-chave dessa linguagem criada pela Microsoft ainda geram dúvidas.

클래스의 용맹한 개체와 유형의 모델에 대한 모든 모델은 인터페이스 또는 유형을 활용하여 실현할 수 있는 가능성이 있습니다. Abaixo estão um exemplo de modelagem usando cada recurso da linguagem.

class People {
    name: string;
    age: number;
}

interface People {
    name: string;
    age: number;
}

type People = {
    name: string;
    age: number;
}


Neste momento você deve estar pensando: "Se é possível realizar a modelagem de qualquer uma das três maneiras, por que eu deveria utilizar ou entender sobre o type?". A resposta é simples, há usos que só o uso do recurso type possibilita, abaixo discorro mais sobre cada um desses cenários.

유형 별칭



Como nome indica, é possível apelidar, isto é, dar um alias a um tipo já existente, seja ele declarado como classe, interface, outro type ou de tipo primitivo.

type Student = People;

type Guid = string;


No exemplo acima, criamos um tipo chamado "Estudante"que, basicamente, é um apelido para o modelo "Pessoa". C# possui에서 Guid(como o C# possui)를 사용할 수 있습니다.

Apelidar um tipo existente, sobretudo tipos primitivos, é útil para trazer semântica de acordo com o contexto com que aquele tipo será usado. Um identificador do tipo string é amplo, não traz pistas sobre o formato do ID, diferentemente de um tipo GUID, que já traz nome seu formato.

템플릿 리터럴



Esse é o recurso ideal para apelidar um ou mais valores estáticos que sejam enumeráveis. 참여하시겠습니까? Bora para um 예시입니다.

type MonthNumber = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12;


Acima estão listados os índices para cada mês do ano. A vantagem de usar tipos literais é ser avisado quando um valor incorreto, isto é, que não pertence ao conjunto definido, for utilizado, como mostra o exemplo abaixo:

조합 유형



모든 이력서, é possível declarar um tipo que aceite múltiplos outros tipos (primitivos, classe, interface, type, literal), ou seja, um tipo que una outros tipos.

criamos um tipo ID que aceita tanto valores do tipo string (caso seja um GUID, por exemplo) quanto do tipo number (caso seja um inteiro auto-incremental, por exemplo).

type ID = string | number;

const peopleId: ID = 13;

const postId: ID = '08288a85-b79b-4022-a0dd-1563bd0f5de1';


교차점 유형



새로운 허가를 받을 수 있는 여러 가지 팁이 있으며, 다양한 방법으로 다양한 방법으로 사용할 수 있습니다. 우리는 최후의 심판을 선언하고, 처음부터 용맹을 적용할 수 없습니다.

No exemplo abaixo criamos uma entidade (Pessoa) e um objeto de valor (Endereço). Com o operator "&"conseguimos unificar os dois tipos em um novo, uma entidade para Representativear uma pessoa com endereço. Esse terceiro tipo conterá todos os atributos dos dois que lhe originalaram.

class People {
    name: string;
    age: number;
    id: ID;
}

interface Address {
    country: string;
    city: string;
}

type PeopleWithAddress = People & Address;

const george: PeopleWithAddress = {
    age: 19,
    city: 'Serra',
    country: 'BR',
    id: 25,
    name: 'George',
    zipCode: 251475899
};


최종 고려 사항



Com esses recursos não há mais desculpas para deixar constantes espalhadas como strings ou numbers espalhados pelo código, ou para repetir todas propriedades de um modelo em outro. É possível ter validação de valores em tempo de desenvolvimento e economizar linhas de declaração de modelo :)

참조:
Types aliases
Literal types
Union types
Intersection types

좋은 웹페이지 즐겨찾기