TypeScript์ ๊ธฐ์ด ๐ฆ| #12: ์ธํฐํ์ด์ค
13822 ๋จ์ด webdevbeginnersspanishtypescript
ยฟQuรฉ es una interfaz?
En palabras poco tรฉcnicas una interfaz es como una especie de molde para nuestro datos. No debemos confundir el termino con la UI de una app, en este caso el concepto de interfaz se relaciona mรกs con la estructura de los datos de nuestro software. ์๋ฅผ ๋ค์ด:
interface Persona {
id:number;
nombre: string;
apellido: string;
edad: number;
esSoltero: boolean;
}
interface Perro {
id:number | string;
nombre: string;
color: string[];
raza:string;
sexo: "Macho" | "Hembra"
}
interface Vehiculo {
placa:string;
color: string;
ruedas: number;
puertas: number;
marca: string;
esNuevo: boolean;
}
En este caso, tenemos 3 ์ธํฐํ์ด์ค:
Persona , Perro , Vehiculo . Cada una de ellas se declara con la palabra reservada interface seguido del nombre de la interfaz (en Pascal Case) y entre llaves todas las propiedades con sus tipos de datos separadas por ; .์ธํฐํ์ฆ ์ฝ๋ชจ ํฐํฌ ๋ฐ ๋คํ
Las Interfaces se usan como tipos de datos Personalizables, con los ejemplos anteriores podrรญamos crear objetos de la siguiente manera:
interface Persona {
id:number;
nombre: string;
apellido: string;
edad: number;
esSoltero: boolean;
}
const pedro:Persona = {
id:1,
nombre:"Pedro",
apellido:"Sanchez",
edad:36,
esSoltero:true,
}
Nuestra variable
pedro es de tipo Persona , por ende debe tener OBLIGATORIAMENTE todas las variables declaradas en Persona .์ ์ฝํธ๋ผํ ๋ฐ ์ฐ๋ ์ธํ ๋ฅดํ์ฆ
En el ejemplo anterior de dice que
pedro cumple el contrato de Persona puesto que tiene todos los datos declarados de manera correcta: id, nombre, apellido, edad, esSoltero Si faltara un dato podrรญamos decir que pedro no cumple con el contrato de Persona puesto que minimamente deberรญa incluir todos los datos de la interfaz.ํ๋กํผ์๋ค๋ฐ์ค ์ต์
Las Interfaces al igual que las funciones soportan valores opcionales con el operador
?interface Vehiculo {
placa:string;
color: string;
ruedas?: number;
puertas?: number;
marca: string;
esNuevo: boolean;
}
const hilux:Vehiculo = {
placa: 'HYK-256',
color: 'rojo',
marca: 'Toyota',
esNuevo: true,
}
La variable
hilux es de tipo Vehiculo pero tanto ruedas como puertas son propiedades opcionales, por ello al crear el objeto y no incluir esos valores no tenemos ningรบnํ๋กํผ์๋ค๋ฐ์ค ๋ ์ฃผ ๊ฐ์
Con la palabra reservada
readonly podemos especificar las propiedades que solo son de lectura y que no podremos cambiar:interface Perro {
id:number | string;
readonly nombre: string;
color: string[];
raza:string;
sexo: "Macho" | "Hembra"
}
// nombre es de solo lectura
const boby:Perro = {
id: "125-boby",
nombre:"Boby",
color: ["cafe","blanco"],
raza:"cooker",
sexo: "Macho"
}
boby.raza = "pastor aleman";
console.log(boby)
boby.nombre = "Rufo"
Si Intentamos Cambiar la
raza del objeto boby no hay problema, pero si hacemos lo mismo con nombre nos darรก un error:'nombre'๋ ์ฝ๊ธฐ ์ ์ฉ ์์ฑ์ด๋ฏ๋ก ํ ๋นํ ์ ์์ต๋๋ค.
ํค๋ ์์ ๋ ์ธํฐํ์ด์ค
Usando la palabra
extends podemos heredar ์ธํฐํ์ด์ค:interface Vehiculo {
placa:string;
color: string;
ruedas?: number;
puertas?: number;
marca: string;
esNuevo: boolean;
}
interface Bicicleta extends Vehiculo {
esMontaรฑera: boolean;
traccion: number;
}
const miBici:Bicicleta = {
placa: '123-abc',
color: 'negro',
marca: 'Santusa',
esNuevo: true,
esMontaรฑera:true,
traccion: 21,
}
La interfaz
Bicicleta hereda todas las propiedades de Vehiculo , port tanto, el objeto miBici debe tener tanto los atributos de Bicicleta como los de Vehiculo .Para este ejemplo podemos hacer opcionales las propiedades
ruedas y puertas ya que para la interfaz Bicicleta no tiene mucho sentido.๊ฒฐ๋ก
? extends readonly podemos hacer propiedades de solo lectura. ์ฐธ์กฐ
Reference
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(TypeScript์ ๊ธฐ์ด ๐ฆ| #12: ์ธํฐํ์ด์ค), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://dev.to/duxtech/fundamentos-de-typescript-12-interfaces-3a2lํ ์คํธ๋ฅผ ์์ ๋กญ๊ฒ ๊ณต์ ํ๊ฑฐ๋ ๋ณต์ฌํ ์ ์์ต๋๋ค.ํ์ง๋ง ์ด ๋ฌธ์์ URL์ ์ฐธ์กฐ URL๋ก ๋จ๊ฒจ ๋์ญ์์ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค