| ... | @@ -240,6 +240,16 @@ interface RecursoDTO { |
... | @@ -240,6 +240,16 @@ interface RecursoDTO { |
|
|
}
|
|
}
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
De las interfaces pueden crearse objetos literales, que son objetos definidos *ad-hoc*:
|
|
|
|
|
|
|
|
```ts
|
|
|
|
const recursoDTOEjemplo: RecursoDTO = {
|
|
|
|
id: "21j5jshsy34js8skasu",
|
|
|
|
unidad: "JMAPER",
|
|
|
|
tipoRecurso: "MATERIAL"
|
|
|
|
};
|
|
|
|
```
|
|
|
|
|
|
|
### Clases
|
|
### Clases
|
|
|
|
|
|
|
|
```ts
|
|
```ts
|
| ... | @@ -288,3 +298,148 @@ console.log('Valor absoluto:', Math.abs(-5)); |
... | @@ -288,3 +298,148 @@ console.log('Valor absoluto:', Math.abs(-5)); |
|
|
console.log('Máximo:', Math.max(10, 20, 5));
|
|
console.log('Máximo:', Math.max(10, 20, 5));
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
|
### type (Alias de tipos)
|
|
|
|
|
|
|
|
La palabra clave `type` permite crear **alias de tipos**, facilitando la reutilización y la legibilidad del código. Es especialmente útil para **uniones**, **tipos compuestos** y **contratos simples**.
|
|
|
|
|
|
|
|
```ts
|
|
|
|
type IDRecurso = string;
|
|
|
|
type UnidadSanitaria = string;
|
|
|
|
type Cantidad = number;
|
|
|
|
|
|
|
|
type EstadoRecurso = 'OPERATIVO' | 'INOPERATIVO' | 'EN_MANTENIMIENTO';
|
|
|
|
```
|
|
|
|
|
|
|
|
Uso práctico en el sistema:
|
|
|
|
|
|
|
|
```ts
|
|
|
|
type RecursoBasico = {
|
|
|
|
id: IDRecurso;
|
|
|
|
unidad: UnidadSanitaria;
|
|
|
|
estado: EstadoRecurso;
|
|
|
|
};
|
|
|
|
|
|
|
|
const recursoBasico: RecursoBasico = {
|
|
|
|
id: '7HG82JD92KS9',
|
|
|
|
unidad: 'JMAPER',
|
|
|
|
estado: 'OPERATIVO',
|
|
|
|
};
|
|
|
|
```
|
|
|
|
|
|
|
|
También pueden combinarse con interfaces:
|
|
|
|
|
|
|
|
```ts
|
|
|
|
type RecursoCompleto = RecursoDTO & {
|
|
|
|
estado: EstadoRecurso;
|
|
|
|
fechaAlta: Date;
|
|
|
|
};
|
|
|
|
```
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
### enum (Enumeraciones)
|
|
|
|
|
|
|
|
Los `enum` permiten definir **conjuntos cerrados de valores**, mejorando la **seguridad semántica** frente a strings libres.
|
|
|
|
|
|
|
|
### Enum numérico
|
|
|
|
|
|
|
|
```ts
|
|
|
|
enum NivelPrioridad {
|
|
|
|
BAJA = 1,
|
|
|
|
MEDIA,
|
|
|
|
ALTA,
|
|
|
|
CRITICA,
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
```ts
|
|
|
|
const prioridadRecurso: NivelPrioridad = NivelPrioridad.ALTA;
|
|
|
|
console.log('Nivel de prioridad:', prioridadRecurso);
|
|
|
|
```
|
|
|
|
|
|
|
|
### Enum de strings (recomendado)
|
|
|
|
|
|
|
|
```ts
|
|
|
|
enum EstadoOperativo {
|
|
|
|
OPERATIVO = 'OPERATIVO',
|
|
|
|
INOPERATIVO = 'INOPERATIVO',
|
|
|
|
EN_MANTENIMIENTO = 'EN_MANTENIMIENTO',
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
Uso en una clase:
|
|
|
|
|
|
|
|
```ts
|
|
|
|
class RecursoEstado {
|
|
|
|
constructor(
|
|
|
|
public id: string,
|
|
|
|
public estado: EstadoOperativo
|
|
|
|
) {}
|
|
|
|
|
|
|
|
mostrarEstado(): void {
|
|
|
|
console.log(`Recurso ${this.id} está ${this.estado}`);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
const recursoEstado = new RecursoEstado(
|
|
|
|
'AJD829DJ29',
|
|
|
|
EstadoOperativo.EN_MANTENIMIENTO
|
|
|
|
);
|
|
|
|
|
|
|
|
recursoEstado.mostrarEstado();
|
|
|
|
```
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
### Object
|
|
|
|
|
|
|
|
```ts
|
|
|
|
const resumen = {
|
|
|
|
humanos: 120,
|
|
|
|
materiales: 340,
|
|
|
|
};
|
|
|
|
|
|
|
|
console.log(Object.keys(resumen));
|
|
|
|
console.log(Object.values(resumen));
|
|
|
|
console.log(Object.entries(resumen));
|
|
|
|
```
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
### JSON
|
|
|
|
|
|
|
|
Muy habitual en comunicaciones con APIs REST.
|
|
|
|
|
|
|
|
```ts
|
|
|
|
const recursoJson = JSON.stringify(recursoBasico);
|
|
|
|
console.log('JSON:', recursoJson);
|
|
|
|
|
|
|
|
const recursoParseado = JSON.parse(recursoJson) as RecursoBasico;
|
|
|
|
console.log('Objeto:', recursoParseado);
|
|
|
|
```
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
### Set (colecciones sin duplicados)
|
|
|
|
|
|
|
|
```ts
|
|
|
|
const unidades = new Set<string>();
|
|
|
|
unidades.add('JMAPER');
|
|
|
|
unidades.add('ACING');
|
|
|
|
unidades.add('JMAPER'); // no se duplica
|
|
|
|
|
|
|
|
console.log('Unidades sanitarias:', unidades);
|
|
|
|
```
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
### Map (clave–valor tipado)
|
|
|
|
|
|
|
|
```ts
|
|
|
|
const inventario = new Map<string, number>();
|
|
|
|
inventario.set('Ambulancias', 40);
|
|
|
|
inventario.set('Enfermeros', 200);
|
|
|
|
|
|
|
|
console.log('Ambulancias:', inventario.get('Ambulancias'));
|
|
|
|
```
|
|
|
|
|