Vue.js, Typescript e futuro
Tanto Vue quanto Typescript são ótimos em seus propósitos. O Vue como framework mvvm e o Typescript como uma “camada” tipada ao ES6. Para quem não conhece o typescript, pode-se pensar em javascript no padrão ES6 e com tipos, ou seja, podemos adicionar um tipo “string” a uma variável chamada “name”. Tem gente que curte, tem gente que não curte.
É de se esperar que ambas as tecnologias vão se encontrar um dia, até mesmo o Evan You mostrou-se aberto ao uso do TS (claro que não mandatório). Até o momento, a biblioteca que mais se destacou foi a vue-typescript, na qual já possui algumas funcionalidades disponíveis.
Mas e o código? Como que fica??
Na imagem a seguir temos um exemplo de como seria a união entre vue e ts:
O primeiro detalhe é o:
import { VueComponent, Prop, Watch } from 'vue-typescript'
Isso irá importar alguns decorators que podem ser usados no código. O primeiro deles é o @VueComponent
, que possui inicialmente duas propriedades: template e style. Perceba que, neste momento, é realizado um require no código que irá incorporar a build do webpack.
Ao invés de termo um objeto vue, no estilo new Vue({…}), temos uma classe, e esta classe é filha da classe Vue. Veja que saímos do modo “Vue” de ser para cair em algo mais parecido com c#, java ou até mesmo php. (Mais uma vez, tem gente que gosta e tem gente que não gosta).
Como criamos uma classe, podemos criar variáveis dentro dela que poderão ser categorizadas pelos decorators. Por exemplo, ao invés de termos:
new Vue({
props:['todo']
})
Temos:
class TodoListComponent extends Vue{
@Prop
todos:TodoListComponent[]
}
Ao invés de usarmos a propriedade data:
new Vue({
data:{
msg:"Hello World"
}
})
podemos ter uma simples variável na classe:
class TodoListComponent extends Vue{
msg:string = "Hello World"
}
Futuro
Falando um pouco do futuro, o vue-typescript é um projeto criado fora do escopo do Evan, talvez ele goste da ideia e incorpore aos seus projetos principais no seu repositório, assim como é o vue-resource. Até lá, podemos apenas observar o desenrolar da história e aguardar!
Deixo aqui apenas como esse “romance” entre vue e Ts pode ser útil, veja a classe a seguir e confira com o ficaria a criação de um menu: