Skip to content

Tipos de Utilitários de TypeScript

INFORMAÇÃO

Esta página lista apenas alguns tipos de utilitários comummente usados que podem precisar de explicação para o seu uso. Para uma lista completa de tipos exportados, consulte o código-fonte.

PropType<T>

Usado para anotar uma propriedade com tipos mais avançados quando usamos as declarações de propriedades de execução.

  • Exemplo

    ts
    import type { PropType } from 'vue'
    
    interface Book {
      title: string
      author: string
      year: number
    }
    
    export default {
      props: {
        book: {
          // fornecer tipo mais específico ao `Object`
          type: Object as PropType<Book>,
          required: true
        }
      }
    }
  • Consulte também: Guia - Tipos para as Propriedades do Componente

MaybeRef<T>

Pseudónimo para T | Ref<T>. Útil para anotar argumentos de Funções de Composição.

  • Apenas suportado na 3.3+.

MaybeRefOrGetter<T>

Pseudónimo para T | Ref<T> | (() => T). Útil para anotar argumentos de Funções de Composição.

  • Apenas suportado na 3.3+.

ExtractPropTypes<T>

Extrai tipos de propriedades a partir dum objeto de opções de propriedades de tempo de execução. Os tipos extraídos são rosto interno - isto é, as propriedades resolvidas recebidas pelo componente. Isto significa que propriedades booleanas e propriedades com os valores padrão são sempre definidas, mesmo se não forem obrigatórias.

Para extrair propriedades de rosto público, isto é, propriedades que o pai é permitido passar, usamos ExtractPublicPropTypes.

  • Exemplo

    ts
    const propsOptions = {
      foo: String,
      bar: Boolean,
      baz: {
        type: Number,
        required: true
      },
      qux: {
        type: Number,
        default: 1
      }
    } as const
    
    type Props = ExtractPropTypes<typeof propsOptions>
    // {
    //   foo?: string,
    //   bar: boolean,
    //   baz: number,
    //   qux: number
    // }

ExtractPublicPropTypes<T>

Extrai tipos de propriedade a partir dum objeto de opções de propriedades de tempo de execução. Os tipos extraídos são rosto público - isto é, as propriedades que o pai é permitido passar.

  • Suportado apenas na 3.3+.

  • Exemplo

    ts
    const propsOptions = {
      foo: String,
      bar: Boolean,
      baz: {
        type: Number,
        required: true
      },
      qux: {
        type: Number,
        default: 1
      }
    } as const
    
    type Props = ExtractPublicPropTypes<typeof propsOptions>
    // {
    //   foo?: string,
    //   bar?: boolean,
    //   baz: number,
    //   qux?: number
    // }

ComponentCustomProperties

Usado para aumentar o tipo da instância do componente para suportar as propriedades globais personalizadas.

  • Exemplo

    ts
    import axios from 'axios'
    
    declare module 'vue' {
      interface ComponentCustomProperties {
        $http: typeof axios
        $translate: (key: string) => string
      }
    }

DICA

Os aumentos devem ser colocados num ficheiro .ts ou .d.ts de módulo. Consulte Colocação do Aumento de Tipo por mais detalhes.

ComponentCustomOptions

Usado para aumentar os tipos das opções do componente para suportar opções personalizadas.

  • Exemplo

    ts
    import { Route } from 'vue-router'
    
    declare module 'vue' {
      interface ComponentCustomOptions {
        beforeRouteEnter?(to: any, from: any, next: () => void): void
      }
    }

DICA

Os aumentos devem ser colocados num ficheiro .ts ou .d.ts de módulo. Consulte Colocação do Aumento de Tipo por mais detalhes.

ComponentCustomProps

Usado para aumentar as propriedades de TSX permitidas no sentido de usar propriedades não declaradas sobre os elementos de TSX.

  • Exemplo

    ts
    declare module 'vue' {
      interface ComponentCustomProps {
        hello?: string
      }
    }
    
    export {}
    tsx
    // agora funciona mesmo se `hello` não for uma propriedade declara
    <MyComponent hello="world" />

DICA

Os aumentos devem ser colocados num ficheiro .ts ou .d.ts de módulo. Consulte Colocação do Aumento de Tipo por mais detalhes.

CSSProperties

Usado para aumentar os valores permitidos nos vínculos da propriedade de estilo.

  • Exemplo

    Permitir qualquer propriedade de CSS personalizada

    ts
    declare module 'vue' {
      interface CSSProperties {
        [key: `--${string}`]: string
      }
    }
    tsx
    <div style={ { '--bg-color': 'blue' } }>
    html
    <div :style="{ '--bg-color': 'blue' }"></div>

DICA

Os aumentos devem ser colocados num ficheiro .ts ou .d.ts de módulo. Consulte Colocação do Aumento de Tipo por mais detalhes.

CONSULTE TAMBÉM

Os marcadores <style> de componente de ficheiro único suportam ligação de valores de CSS ao estado do componente dinâmico usando a função de CSS v-bind. Isto permite propriedades personalizadas sem aumento de tipo.

Tipos de Utilitários de TypeScript has loaded