ami me dice que todos los metodos de faker estan deprecados xd
Introducción
¿Ya tomaste el Curso de TypeScript: Tipos Avanzados y Funciones?
Fundamentos de POO
Class
Métodos
Acceso público
Acceso privado
Constructor
Getters
Setters
POO Avanzada
Herencia
Acceso protegido
Static
Interfaces
Clases abstractas
Singleton: constructor privado
Asincronismo y consumo de APIs
Promesas
Tipando respuestas HTTP
Proyecto: migración de funciones a clases
Consumiendo ProductMemoryService
ProductHttpService
Consumiendo ProductHttpService
Genéricos
Generics
Generics en clases
Generics en métodos
Decoradores
Próximos pasos
¿Quieres más cursos de TypeScript?
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
No se trata de lo que quieres comprar, sino de quién quieres ser. Aprovecha el precio especial.
Antes: $249
Paga en 4 cuotas sin intereses
Termina en:
Aportes 12
Preguntas 3
ami me dice que todos los metodos de faker estan deprecados xd
Si todo lo relacionado con Faker les da error, deben de utlizar el nombre de faker entre llaves. así
import { faker } from "@faker-js/faker";
Creo que al método add debería hacerlo privado, así no se puede acceder desde fuera de la clase. Ya que su finalidad es ser utilizado internamente por el método create
Les dejo el código compatible con la versión actual de faker y la versión actual de la api, que ahora sí contiene un createdAt y un updatedAt:
import { faker } from '@faker-js/faker';
import { CreateProductDto, UpdateProductDto } from '../dtos/product.dto';
import { Product } from '../models/product.model';
export class ProductMemoryService {
private products: Product[] = [];
create(data: CreateProductDto): Product {
const newProduct = {
...data,
id: faker.number.int(),
createdAt: faker.date.recent(),
updatedAt: faker.date.recent(),
category: {
id: data.categoryId,
name: faker.commerce.department(),
image: faker.image.url(),
createdAt: faker.date.recent(),
updatedAt: faker.date.recent(),
},
};
return this.add(newProduct);
}
add(product: Product) {
this.products.push(product);
return product;
}
update = (id: Product['id'], data: UpdateProductDto): Product => {
const index = this.products.findIndex((item) => item.id === id);
const prevData = this.products[index];
this.products[index] = {
...prevData,
...data,
};
return this.products[index];
};
findOne(id: Product['id']) {
return this.products.find((item) => item.id === id);
}
}
Me tarde un rato en saber por que me daba error el metodo “create” era por que tenia creationAt y UpdatedAt en las propiedades de la interfaz Product y Category
import { faker } from '@faker-js/faker';
import { Product } from '../models/product.model';
import { CreateProductDto, updateProductDto } from '../dtos/product.dto';
export class ProductMemoryService {
private products: Product[] = [];
create(data: CreateProductDto): Product {
const newProduct = {
...data,
id: faker.datatype.number(),
category: {
id: data.categoryId,
name: faker.commerce.department(),
image: faker.image.imageUrl(),
},
};
this.products.push(newProduct);
return this.add(newProduct);
}
add(product: Product) {
this.products.push(product);
return product;
}
updateProduct(id: Product['id'], changes: updateProductDto): Product {
const index = this.products.findIndex((item) => item.id === id);
const prevData = this.products[index];
this.products[index] = {
...prevData,
...changes,
};
return this.products[index];
}
findOne(id: Product['id']) {
return this.products.find((item) => item.id === id);
}
}
Migración de mi códig:
import { faker } from '@faker-js/faker';
import { Product } from "../models/product.model";
import { CreateProductDto, UpdateProductDto } from "../dtos/product.dto";
import { Category } from '../models/category.model';
export class ProductMemoryService {
private products: Product[] = [];
create (data: CreateProductDto): Product {
const newProduct = {
...data,
id: faker.datatype.number(),
category: {
id: data.categoryId,
createdAt: faker.date.past(5),
name: faker.commerce.department(),
image: faker.image.imageUrl()
},
};
return this.add(newProduct);
};
add (product: Product) {
this.products.push(product);
return product;
};
update (id: number, changes: UpdateProductDto): Product {
const index = this.products.findIndex(item => item.id === id);
const prevData = this.products[index];
this.products[index] = {
...prevData,
...changes,
}
return this.products[index];
};
delete (id: number) {
const getIndexOfProduct = (id: Category['id']) =>
this.products.findIndex(item => item.id === id);
const index: number = getIndexOfProduct(id);
this.products.splice(index, 1);
console.log(this.products);
};
getOne (id: number) {
return this.products.find(item => item.id === id);
};
}
Documentación de Faker
Aqui esta mi version de la function create()
. Use los metodos de la version mas reciente de faker
create(data: CreateProductDto): Product {
const newProduct = {
...data,
id: faker.number.int(),
category: {
id: data.categoryId,
name: faker.commerce.department(),
image: faker.image.url()
}
}
return this.add(newProduct);
}
Tambien cambie el importe de faker:
import { faker } from '@faker-js/faker';
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?