Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[오정민] Sprint8 #254

Conversation

ojm51
Copy link
Collaborator

@ojm51 ojm51 commented Aug 2, 2024

요구사항

  • Github에 PR(Pull Request)을 만들어서 미션을 제출합니다.
  • 피그마 디자인에 맞게 페이지를 만들어 주세요.
  • Typescript를 사용합니다.

기본

체크리스트 [기본]

  • 스프린트 미션 1 ~ 7에 대해 typescript를 적용해주세요

주요 변경사항

  • 스프린트 미션 5~7에 타입스크립트를 적용하였습니다.

멘토에게

  • 확장자를 변경했을 때 뜨는 오류를 우선적으로 수정하였습니다.
  • A->B->C 컴포넌트로 전달되는 프롭스가 있을 때, 중간에서 프롭스를 전달만 해주는 B 컴포넌트에서도 해당 프롭스의 모든 속성 타입을 정의해주어야 하는지 궁금합니다.
  • 주말에도 계속 수정하겠습니다.
  • 셀프 코드 리뷰를 통해 질문 이어가겠습니다.

@ojm51 ojm51 requested a review from wlgns2223 August 2, 2024 15:09
@ojm51 ojm51 self-assigned this Aug 2, 2024
@ojm51 ojm51 added 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 미완성🫠 죄송합니다.. labels Aug 2, 2024
Comment on lines +9 to +12
"@types/jest": "^29.5.12",
"@types/node": "^22.0.2",
"@types/react": "^18.3.3",
"@types/react-dom": "^18.3.0",
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@types/* 의존성들은 devDependacny에 추가를 해주세요. devDependancy에 포함된 패키지들은 최종 번들에서 제외되기 때문에 번들 사이즈가 줄어듭니다.

Comment on lines +9 to +13
const getNavLinkClassName = (isActive: boolean) =>
isActive ? "menu active" : "menu";

function Nav() {
const [isLogin, setIsLogin] = useState<boolean>(true);
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

Comment on lines +5 to +8
interface Writer {
image: string;
nickname: string;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

API 명세를 봤을때 Writer라는 데이터 구조에 id 속성이 있는데 해당 코드에는 없네요.
API 응답값이랑 동일하게 타입을 지정해준다고 생각하시면 편할 것 같습니다.

Suggested change
interface Writer {
image: string;
nickname: string;
}
interface Writer {
image: string;
nickname: string;
id: number
}

Comment on lines +10 to +14
interface IComment {
writer: Writer;
content: string;
updatedAt: string;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment도 API 명세를 보면 다른 프로퍼티들이 더 있습니다. API명세를 보고 빠진 프로퍼티 다 작성해주셔야합니다.

const [isInputFill, setIsInputFill] = useState(false);

const handleValueChange = (e) => {
const handleValueChange = (e: ChangeEvent<HTMLTextAreaElement>) => {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍

import "./TextInput.css";

function TextInput({ isTextArea, name, label, placeholder, onChange }) {
interface Props {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그냥 Props 보다 어떤 컴포넌트의 Props인지 이름을 명확하게 주면 좋을 것 같습니다 !

Suggested change
interface Props {
interface TextInputProps {

Comment on lines +8 to +17
interface Product {
id: string;
name: string;
description: string;
price: number;
images: string;
favoriteCount: number;
tags?: string[];
createdAt: string;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

다른 파일에서 Product 타입을 정의를 했었습니다. 타입도 재사용성을 고려해서 한번 정의한 타입은 import해서 계속 재사용을 해야합니다.

Comment on lines +4 to +13
interface Product {
id: string;
name: string;
description: string;
price: number;
images: string;
favoriteCount: number;
tags?: string[];
createdAt: string;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Product 타입 재사용을 해야하는 부분입니다 !

Comment on lines +8 to +14
interface Item {
id: string;
name: string;
price: number;
images: string;
favoriteCount: number;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분은 Product를 그대로 재사용하거나 Product 타입의 일부이기때문에 Product 타입을 잘 조작해서 타입을 만들어 줘야합니다. 멘토링 시간에 다뤄볼께요 ~

Comment on lines +11 to +30
interface ProductDetails {
id: string;
name: string;
description: string;
price: number;
images: string;
favoriteCount: number;
tags?: string[];
}

interface Writer {
image: string;
nickname: string;
}

interface ProductComments {
writer: Writer;
content: string;
updatedAt: string;
}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

이 부분도 역시 재사용을 해야하는 부분입니다 !

@wlgns2223
Copy link
Collaborator

스프린트 미션 수고하셨습니다. 타입을 꼼꼼하게 지정해주려고 노력하셨네요! 재사용성을 고려하시면 더 잘 사용하실 것 같습니다 !

@wlgns2223 wlgns2223 merged commit d9e3bbc into codeit-bootcamp-frontend:React-오정민 Aug 5, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. 미완성🫠 죄송합니다..
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants