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
tsimport 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
tsconst 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.
Exemplo
tsconst 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
tsimport 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.
- Consulte também: Guia - Aumentando Propriedades Globais
ComponentCustomOptions
Usado para aumentar os tipos das opções do componente para suportar opções personalizadas.
Exemplo
tsimport { 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.
- Consulte também: Guia - Aumentando Propriedades Globais
ComponentCustomProps
Usado para aumentar as propriedades de TSX permitidas no sentido de usar propriedades não declaradas sobre os elementos de TSX.
Exemplo
tsdeclare 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
tsdeclare 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.