Olá, meu nome é Mark Nair e nestas lições você aprenderá aprenda sobre tipos complexos, incluindo tipos literais, enums, tuplas, tipos de array, uniões e a chave do operador de tipo. Quando dizemos a palavra tipo, na maioria das vezes queremos dizer um tipo primitivo, como uma string ou um número. Pelo menos fazemos no início. Às vezes, porém, é um tipo que criamos, como uma interface. Vamos dar uma olhada em um tipo rápido. Portanto, este é um nome de usuário do tipo string. Até agora, muito fácil. Às vezes, porém, você deseja um valor específico como o tipo, assim. Então, em vez de string agora, nome de usuário é do tipo Kramer. Não é o valor de Kramer, porque não lhe demos nenhum valor valor ou atribuído aqui com o operador de atribuição. Se eu passar o nome de usuário, aqui deixei o nome de usuário do tipo Kramer. Mas o que é Kramer, exceto apenas uma frase que escrevi? E você pode pensar, se eu precisar limitar um tipo a algo literal, que é exatamente isso, um tipo literal. Então, de agora em diante, digamos que não posso fazer algo assim. Não posso dar-lhe um valor diferente. Não funcionará porque o nome de usuário diz que não pode ser atribuído a tipo Kramer, mesmo que Jerry é o conteúdo. Jerry não é do tipo Kramer. Não sabemos realmente que tipo é Kramer. Nós apenas sabemos que Jerry não é isso. Você pode estar pensando, se eu precisar limitar um tipo a algo literal, por que não uso apenas uma constante? Bem, é uma boa pergunta, mas digamos que você precise de vários literais em um objeto. Por exemplo, vamos dar uma olhada nisso. Livre-se dessa linha e criarei um novo objeto chamado pessoa. E vamos realmente definir isso. Quer saber, mesmo antes de fazer isso, eu irei aqui em cima para alinhar um. Em vez de dizer let username, na verdade vou fazer isso é um tipo. A maneira como farei isso é usar o tipo de palavra-chave. Agora, quando eu faço um tipo, quero colocar isso em maiúscula para que eu possa diga que isso é um tipo e não outra coisa. Então, aqui embaixo, o nome agora é do tipo aqui. OK, então preciso atribuir isso agora a um valor. Agora, aqui estou, meu nome é do tipo Kramer porque aqui em cima, nome de usuário Kramer. A propósito, isso é chamado usando um alias de tipo. Só estou colocando aqui, mas é a mesma coisa que eu tinha segundo atrás. Tudo bem, eu configurei minha pessoa com minha arquitetura aqui, minha forma do objeto. Agora, para fornecer algumas informações reais. Então, vamos reservar um segundo para reforçar um pouco disso. Eu criei um novo tipo aqui chamado nome de usuário. Agora esse tipo realmente tem um valor literal, um valor literal tipo de Kramer. Agora defini a forma do meu objeto aqui. Eu defini isso com minhas duas propriedades. O nome é do tipo nome de usuário, que na verdade é do tipo Kramer por causa desse tipo de negócio de alias aqui na linha um. Então usar camisa bufante é do tipo booleano. Então eu dei alguns valores aqui. Nome Kramer, vestindo camisa bufante falsa. Eu sempre caio no problema de esquecer de colocar minhas vírgulas nas coisas e você pode fazer isso também. Se você se deparar com a situação, receba um erro, geralmente é isso problema sintático. Mas de qualquer forma, aqui mesmo, o único nome de usuário que posso inserir aqui é Kramer. Se eu tentar outra coisa, Vou receber um erro. E o erro aqui diz que o tipo Elaine não pode ser atribuído para digitar Kramer. Novamente, qual é o tipo Kramer? Tudo o que é é um tipo literal de string. E Elaine não é isso. E realmente a única coisa que existe é a corda Kramer. E você vê isso no pop-up. Então, na conclusão do código, recebo este Kramer muito útil. É isso. Então isso funciona bem. Mas podemos estender esse alias de tipo para torná-lo um pouco mais do que Kramer, mas muito menos do que outras coisas. E a maneira como fazemos isso é usar o símbolo de barra vertical. E isso dirá ou. Então agora posso dizer que o tipo literal é Kramer ou Elaine ou George ou Jerry. E tudo isso é perfeitamente legítimo para aparecer aqui como o valor do nome. Vamos explorar isso um pouquinho. Eu vou inventar minha corda. Lá está Elaine. Aí está George para o G. Jerry. Mas se eu digitar P para algo como Paul, há não P. Quero colocar tipo em Joanna. Tudo o que tenho é Jerry. Digite Alita. Bem, não posso fazer isso porque Alita não pode ser atribuída ao tipo nome de usuário. As únicas coisas que eu poderia fazer são o ors na string, o tipos literais, os valores de string que forneci aqui. Então isso significa apenas que posso colocar George e isso funciona perfeitamente multar. Então essa é a razão pela qual nos damos um pouco mais flexibilidade no uso de tipos literais, mesmo que estejamos literalmente dando-lhe o tipo de apenas uma série de personagens, que não tem significado em um tipo. Mas para nós, esse é o significado. Portanto, nosso tipo literal é este conteúdo aqui ou isto ou isto ou que. E podemos alternar ou podemos usá-los. Então, se quisermos apenas ter uma série de pessoas e apenas sei que será entre esses quatro nomes e usar um camisa inchada é o booleano entre esses quatro. Essa é uma ótima maneira de fazer isso. Obrigado por assistir. Fique ligado na próxima lição, onde mostrarei como enum tipos funcionam em TypeScript.