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๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค