typescript - Existe uma maneira de eu me livrar das cópias das definições de tipo que fiz para torná-las disponíveis globalmente?
Então, eu sou muito novo em TypeScript e sei muito pouco sobre ele. Mas com muita dor e esforço consegui fazê-lo funcionar com VueJS.
Aqui está o modelo que eu construí.
Uma das coisas que eu desesperadamente queria e que demorou muito para eu conseguir é fazer com que eu não precise importar Vue ou qualquer tipo de decoradores como Component em cada maldito componente que eu crio. Como você pode ver neste arquivo Vue em particular, estou estendendo Vue e usando muitos decoradores de tipo diferentes e, ainda assim, não preciso importá-los. Isso é simplesmente tão agradável para os meus olhos.
No entanto, a forma como consegui isso não é nada bonita. Eu basicamente apenas copiei as definições de tipo de todas essas coisas para esta pasta. Isso é ruim, porque assim que qualquer um desses pacotes muda suas definições de tipo, meu template começa a quebrar.
No entanto, descobri que se eu tentasse simplesmente importar essas definições de tipo (tentei de várias maneiras), elas não ficam disponíveis globalmente em todos os meus arquivos .vue.
Eu gostaria de saber, é possível simplesmente importar essas definições de tipo em um único lugar e torná-las disponíveis para todos os meus arquivos .vue? Se sim, alguém pode me dizer como fazer isso? Se isso der certo, ficarei tão feliz. Eu realmente trabalhei por dias tentando fazer isso funcionar tanto quanto consegui.
Resposta #1
Você pode declarar seus tipos no escopo global:
import Vue from 'vue'
import Component from 'vue-class-component'
declare global {
const VueComponent: typeof Component
class VueClass extends Vue {}
}
// From another file
@VueComponent({
props: {
propMessage: String
}
})
export default class App extends VueClass {
}
