A maneira como os tipos são reduzidos no TypeScript

TypeScript é uma linguagem de programação com verificação de tipo estático, que ajuda os desenvolvedores a reduzir erros no código, permitindo que eles definam os tipos de variáveis, funções, interfaces, classes etc. no código. Existem alguns recursos muito poderosos no sistema de tipo TypeScript, e um dos conceitos muito importantes é a restrição de tipo (Type Narrowing). Neste blog de tecnologia, exploraremos várias maneiras pelas quais os tipos podem ser reduzidos no TypeScript.

1. Asserção de tipo (Afirmação de tipo)

As asserções de tipo são uma das técnicas de restrição de tipo mais usadas no TypeScript. Quando um desenvolvedor faz uma declaração de tipo em uma variável, ele está informando ao compilador TypeScript que o tipo da variável é o tipo que especificamos. Ao fazer asserções de tipo em variáveis, podemos usar a palavra-chave "as" ou o símbolo "<>". Por exemplo:

const myVariable: unknown = "hello world";

if(typeof myVariable === "string"){
  const myString: string = myVariable as string;
  console.log(myString.toUpperCase());
}

2. instância da palavra-chave

A palavra-chave instanceof no TypeScript pode ser usada para verificar se um objeto pertence a uma instância de uma determinada classe, o que também é uma forma de redução de tipo. Por exemplo:

class MyPerson {
    firstName: string;
    lastName: string;
}

const myObject: any = new MyPerson();
if(myObject instanceof MyPerson) {
    console.log(myObject.firstName);
}

Neste exemplo, usamos a palavra-chave instanceof para determinar se myObject é uma instância da classe MyPerson, para que possamos usar apenas a propriedade firstName na classe MyPerson no bloco de instrução if.

3.em palavras-chave

A palavra-chave in é usada para verificar se uma propriedade pertence a um objeto. Se essa condição for verdadeira, o TypeScript padronizará o tipo dessa variável para o tipo que especificamos. Por exemplo:

type Student = {
    name: string;
    major: string;
    gpa: number;
}

function printStudentInfo(student: Student, key: string) {
    if (key in student) {
        console.log(student[key]);
    }
}

Neste exemplo, utilizamos a palavra-chave in para verificar se a chave passada pertence à propriedade do objeto aluno, sendo que o tipo padrão desta variável é string.

4. Função de proteção de tipo personalizado

Além dos métodos básicos de redução de tipo mencionados acima, o TypeScript também permite que os desenvolvedores personalizem as funções de proteção de tipo para redução de tipo. Uma função de proteção de tipo é uma função que verifica em tempo de execução se uma variável é de um tipo específico e retorna um valor booleano. Por exemplo:

interface Animal {
    name: string;
}

interface Dog extends Animal {
    breed: string;
}

function isDog(animal: Animal): animal is Dog {
    return (animal as Dog).breed !== undefined;
}

function bark(animal: Animal) {
    if(isDog(animal)){
        console.log((animal as Dog).name + " barks!");
    } else {
        console.log(animal.name + " doesn't bark!");
    }
}

const myAnimal1: Animal = { name: "Bob" };
const myAnimal2: Dog = { name: "Max", breed: "Beagle" };

bark(myAnimal1);    // "Bob doesn't bark!"
bark(myAnimal2);    // "Max barks!"

Neste exemplo, definimos uma função isDog, que é utilizada para verificar se a variável passada é do tipo Dog. Observe que o valor de retorno da função isDog é animal is Dog, que é um predicado do tipo, indicando que a função tratará a variável passada como do tipo Dog.

Resumir

Este blog técnico apresenta várias formas de redução de tipo em TypeScript, incluindo declaração de tipo, instância de palavra-chave, em palavra-chave e função de proteção de tipo personalizado. Cada tecnologia de redução de tipo tem seus cenários de aplicação e vantagens.Ao escrever código TypeScript, os desenvolvedores podem escolher o método mais adequado para redução de tipo, de forma a tornar o código mais robusto e seguro.

おすすめ

転載: blog.csdn.net/weixin_61719769/article/details/129865797