props 객체에 타입지정을 해주라고 한다.
todoItem은 정해진 데이터 구조가 있으니 interface를 사용해서 재사용이 가능하다.
다른 개발자의 레포에서 봤던 것처럼 /models/TodoItem.ts
를 생성해 Interface를 선언했다.
✅ 이후 아래와 같이 Todo.tsx
의 props 객체에 타입을 지정해주었다.
function Todo({
todoItem,
todoList,
setTodoList,
}: {
todoItem: TodoItem;
todoList: TodoItem[];
setTodoList: Function;
}) {
인터페이스가 어떤 기능들이 있는지 아직 모르는데, 일단 예제를 따라해보았더니 문제는 해결되었다.
/api/todo.ts
에서의 token 에러export const API = {
getTodoList: async function (token: string | undefined) {
const uri = `${baseUrl}/todos`;
const options = {
headers: { Authorization: `Bearer ${token}` },
};
const response = await request(uri, options);
return response;
},
postTodo: async (token: string | undefined, bodyData = {}) => {
const uri = `${baseUrl}/todos`;
const options = {
method: 'POST',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(bodyData),
};
const response = await request(uri, options);
return response;
},
putTodo: async (token: string | undefined, bodyData = {}) => {
const uri = `${baseUrl}/todos/${bodyData?.id}`;
const options = {
method: 'PUT',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(bodyData),
};
const response = await request(uri, options);
return response;
},
any
로 해결하기로 한다.catch (error: any) {
console.error('API통신 실패 :' + error.message);
}
postTodo: async (token: string | undefined, bodyData: TodoItem) => {
const uri = `${baseUrl}/todos`;
const options = {
method: 'POST',
headers: {
Authorization: `Bearer ${token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify(bodyData),
};
const response = await request(uri, options);
return response;
},
index.tsx
에서 document.getElementhById(’root’)가 에러 🤣타입스크립트 적용이 쉬운 일은 아닌것 같다. 특히나 에러 메세지를 이렇게 기록하려니 더 오래 걸려서 작업량이 꽤 많다...
다음 프로젝트 부터는 포스팅 없이 해야겠다... 그래도 하던 건 끝까지 해야하니까 느려도 진행해야지 😅
다행인건 내일 완성된다면 이틀만에 마이그레이션에 성공한 것이니까.. 좋게 생각해야겠다. 얼른 타스로 다른 프로젝트도 해보고싶다!