Browse Source

Update Types

main
Adrien-Ba 4 years ago
parent
commit
0fd192be16
  1. 17
      src/App.tsx
  2. 10
      src/TodoItem.tsx

17
src/App.tsx

@ -2,14 +2,21 @@ import { useState } from 'react';
import { faker } from '@faker-js/faker'; import { faker } from '@faker-js/faker';
import { TodoItem } from './TodoItem'; import { TodoItem } from './TodoItem';
import { nanoid } from 'nanoid'; import { nanoid } from 'nanoid';
import { ReactElement } from 'react';
const generateFakeTodoItem = () => ({
interface TodoItem {
label: string;
status: string;
id: string;
}
const generateFakeTodoItem = (): TodoItem => ({
label: faker.hacker.phrase(), label: faker.hacker.phrase(),
status: faker.random.arrayElement(['open', 'done', 'archived']), status: faker.random.arrayElement(['open', 'done', 'archived']),
id: nanoid(), id: nanoid(),
}); });
const generateNTodo = (size) => {
const generateNTodo = (size:number): TodoItem[] => {
return Array.from(Array(size).keys()).map(generateFakeTodoItem); return Array.from(Array(size).keys()).map(generateFakeTodoItem);
}; };
@ -32,10 +39,10 @@ const initialList = [
...generateNTodo(10), ...generateNTodo(10),
]; ];
function App() {
function App(): ReactElement {
const [todoList, setTodoList] = useState(initialList); const [todoList, setTodoList] = useState(initialList);
const updater = (id, newStatus) => {
const updater = (id:string, newStatus:string) => {
setTodoList((oldList) => setTodoList((oldList) =>
oldList.map((it) => { oldList.map((it) => {
if (it.id !== id) { if (it.id !== id) {
@ -57,7 +64,7 @@ function App() {
key={item.id} key={item.id}
label={item.label} label={item.label}
status={item.status} status={item.status}
onChecked={(newState) => updater(item.id, newState)}
onChecked={(newState: string) => updater(item.id, newState)}
/> />
))} ))}
</div> </div>

10
src/TodoItem.tsx

@ -1,6 +1,14 @@
import clsx from 'clsx'; import clsx from 'clsx';
import { ReactElement } from 'react';
export const TodoItem = ({ status, label, onChecked }) => {
interface TodoItem {
label: string;
status: string;
onChecked: (newState: string) => void;
}
export const TodoItem = ({ status, label, onChecked }: TodoItem ): ReactElement => {
return ( return (
<div <div
className={clsx('p-4 flex items-center', { className={clsx('p-4 flex items-center', {

Loading…
Cancel
Save