From 70c83bdf3f19bcbe8d07bbfab07870d91b1e24db Mon Sep 17 00:00:00 2001 From: Tarskan <55380090+Tarskan@users.noreply.github.com> Date: Mon, 21 Feb 2022 09:35:44 +0100 Subject: [PATCH] Finis --- src/App.tsx | 17 ++++++++++++----- src/TodoItem.tsx | 11 +++++++++-- 2 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/App.tsx b/src/App.tsx index fd7b152..5b13b0a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -2,14 +2,21 @@ import { useState } from 'react'; import { faker } from '@faker-js/faker'; import { TodoItem } from './TodoItem'; import { nanoid } from 'nanoid'; +import { ReactElement } from 'react'; -const generateFakeTodoItem = () => ({ +interface FakeTodoItem { + label: string; + status: string; + id: string; +} + +const generateFakeTodoItem = ():FakeTodoItem => ({ label: faker.hacker.phrase(), status: faker.random.arrayElement(['open', 'done', 'archived']), id: nanoid(), }); -const generateNTodo = (size) => { +const generateNTodo = (size:number):FakeTodoItem[] => { return Array.from(Array(size).keys()).map(generateFakeTodoItem); }; @@ -32,10 +39,10 @@ const initialList = [ ...generateNTodo(10), ]; -function App() { +function App(): ReactElement { const [todoList, setTodoList] = useState(initialList); - const updater = (id, newStatus) => { + const updater = (id: string, newStatus: string): void => { setTodoList((oldList) => oldList.map((it) => { if (it.id !== id) { @@ -57,7 +64,7 @@ function App() { key={item.id} label={item.label} status={item.status} - onChecked={(newState) => updater(item.id, newState)} + onChecked={(newState): void => updater(item.id, newState)} /> ))} diff --git a/src/TodoItem.tsx b/src/TodoItem.tsx index d52e923..7fb907a 100644 --- a/src/TodoItem.tsx +++ b/src/TodoItem.tsx @@ -1,6 +1,13 @@ import clsx from 'clsx'; +import { ReactElement } from 'react'; -export const TodoItem = ({ status, label, onChecked }) => { +interface TodoItemProps { + label: string; + status: string; + onChecked: (newState: string) => void; +} + +export const TodoItem = ({ status, label, onChecked }: TodoItemProps): ReactElement => { return (