-
Notifications
You must be signed in to change notification settings - Fork 1
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
feat: Badge 구현 #6
Conversation
* <Badge> 컴포넌트 제작을 위한 type.ts 추가
* <Badge> 컴포넌트 제작을 위한 styled.div 생성
* <Badge> 컴포넌트 추가
* <Badge> 컴포넌트 테스트를 위한 스토리 2개 추가
지나가던 군바립니다..! 컬러 팔레트 관련해서 고민 많이 하셨을 것 같은데 고생하셨네요! 코드를 살펴보고 생각해 봤는데 project-wide 에 반영할 수 있는 개선점이 있을 것 같아서 제안드립니다. 아무래도 아래는 템플릿 리터럴 타입의 유니온에서 특정 리터럴을 포함한 유니온 타입을 만드는 예시입니다! // type SemanticItemColor = ...;
type OnlyBGColor<T> = T extends `${string}BG` ? T : never;
type SemanticItemBGColor = OnlyBGColor<SemanticItemColor>; 이런 식으로 제네릭 타입과 컨디셔널 타입을 조합해서 특정 리터럴 조건에 맞는 값들의 유니온들만 뽑아낼 수 있어요. 이 경우에는 SemanticItemColor 에서 BG로 끝나는 값들로만 이루어진 Union Type인 SemanticItemBGColor를 만들었어요. 이렇게 만들면 나중에 비슷한 방법으로 팔레트도 filter 함수를 이용하여 semanticColorPalette에 BG 색상만 포함시킬 수 있어요. // const semanticColorPalette: SemanticColorPalette = { ... };
const semanticBGColorPalette: Record<SemanticItemBGColor, string> = Object
fromEntries(
Object.entries(semanticColorPalette).filter(([key]) => key.endsWith('BG'))
); PR에서 작성하신 코드의 목적을 추측해 본다면 게다가 앞서 말씀드린 것처럼 foundation 레벨에서 해당 팔레트들을 제공한다면 컴포넌트 별로 구현할 필요가 없으니 파편화 문제가 줄어들 거고요. 혹시 다른 의견이나 더 좋은 방법이 있으면 말씀해 주세요. 화이팅! |
@EATSTEAK
객체에 매핑해서 BG만 남기는 방식은 예전 YDS 관련 코드 살펴보다가 디노님이 작업하신 내용 참고했습니다 디노님 감사합니다감사하빈ㄴ다 |
* BadgeProps 타입의 children 속성을 string에서 React.ReactNode 타입으로 변경했습니다.
* BadgeProps 타입의 color (배경색) 속성을 SemanticBGColor 타입으로 수정
* 상대경로로 적혀있는 import문을 path alias에 맞게 수정
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
수고하셨숩니다~!
1️⃣ 어떤 작업을 했나요? (Summary)
2️⃣ 알아두시면 좋아요!
SemanticBGColor 타입 생기기 이전에 적었던 내용 (지금은 안 봐도 되는 내용)
Badge.type에
BadgeColor
를 만들고, Badge.tsx에서backgroundColorMap
로 매핑해서 쓴 이유:BadgeProps
-color
를SemanticItemColor
타입으로 설정하면 스토리북 옵션에--Primary
,--Text
까지 포함되어서,--BG
만 넣은backgroundColorMap
을 만들어서 작업했습니다 🤔 왠지 이거 뭐야!??!?! 하실까봐.. 미리 변명을 좀3️⃣ 추후 작업
color
타입 수정 ➡ 42a5802