# Comenzando

# Asignado Tipos

# Interface

A través de la palabra reservada interface podemos asignar que tipo de datos queremos para nuestros objetos, luego mediante : NombreInterface nuestros objetos obtienen el tipo de dato.

interface InfoApp {
  nombre: string
  texto: string
}

const infoApp: InfoApp = reactive({
  nombre: 'Contador',
  texto: 'Vamos a contar'
})

# Aplicando tipos directamente I

const contador = ref<number | string>(0);

function incrementar() {
  if (typeof contador.value === "number")
  contador.value ++
  }

# Aplicando tipos directamente II

También podemos asignar el tipo de dato directamente mediante : tipoDato

# script

function incrementar(num: number) {
  if (typeof contador.value === "number")
  contador.value += num
  }

# template

 <button @click="incrementar(2)">Incrementar</button>

# Enum

Podemos enumerar una lista de opciones disponibles personalizadas, ponemos un nombre y a continuación escribimos las opciones. Funciona como un array asignado un número a cada opción. Podremos ver la opción a través de su posición.

enum Temporada {
  primavera,
  verano,
  otono,
  invierno
}

const temporada = ref<Temporada> (Temporada.invierno)
  <h1>{{ temporada }}</h1>  
  <h1>{{ Temporada[temporada] }}</h1>

# Export default interface

typescript > interface.ts

export default interface Persona {
    nombre: string,
    apellido: string
  }

views > HelloView.vue

import type Persona from '@/typescript/interfaces';

const persona: Persona = reactive ({
  nombre: 'Carlos',
  apellido: 'Miranda'
})
<h1>{{ persona.nombre + ' ' + persona.apellido }}</h1>