-
Notifications
You must be signed in to change notification settings - Fork 13
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(utils): clamp 추가 #603
Conversation
🦋 Changeset detectedLatest commit: 8ac9adc The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
@metacode22 modern-kit에 관심을 갖고 작업해주셔서 감사드립니다. 내일중으로 확인 후에 코멘트가 필요한 부분이 있다면 코멘트 남기도록 하겠습니다!👍👍 changeset 은 제가 리뷰 후에 추가하고 있습니다!😄 |
오옷! 넵! 리뷰 해주시면 열띠미 반영해보겠습니다!🫡 감사합니다!😆 |
export function clamp(value: number, min: number, max: number): number { | ||
return Math.min(Math.max(value, min), max); | ||
} |
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.
export function clamp(value: number, max: number): number
@metacode22 위와 같이 min이 없고 max만 존재하는 케이스도 지원하면 좋을 것 같습니다 :)
lodash, es-toolkit 모두 위 케이스를 지원합니다.
// lodash
clamp(number: number, lower: number, upper: number): number;
clamp(number: number, upper: number): number;
// es-toolkit
export function clamp(value: number, maximum: number): number;
export function clamp(value: number, minimum: number, maximum: number): number;
추가적으로 jsdoc
을 추가합니다.
제안 코드
/**
* @description `주어진 값`을 `최대값으로 제한`합니다.
*
* @param {number} value - 제한할 숫자
* @param {number} max - 최대 범위
* @returns {number} 지정된 범위 내로 제한된 숫자
*
* @example
* clamp(3, 5); // 3
* clamp(10, 6); // 6
*/
export function clamp(value: number, max: number): number
/**
* @description `주어진 값`을 `최소값과 최대값 사이로 제한`합니다.
*
* @param {number} value - 제한할 숫자
* @param {number} min - 최소 범위
* @param {number} max - 최대 범위
* @returns {number} 지정된 범위 내로 제한된 숫자
*
* @example
* clamp(7, 0, 10); // 7
* clamp(10, 0, 5); // 5
* clamp(-5, 0, 10); // 0
*/
export function clamp(value: number, min: number, max?: number): number {
if (isNil(max)) {
return Math.min(value, min);
}
return Math.min(Math.max(value, min), max);
}
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.
오 제가 일이 많았어서 이제 보았네요! 말씀해주신 부분들 이번 주 내에 추가해서 다시 리뷰 요청드리겠습니다~! 😀
추가적으로 benchmark 파일도 추가되면 좋을 것 같습니다. (비교는 lodash의 clamp) 타 유틸 함수의 .bench.ts 파일을 참고해주세요 :)
benchmark 파일이 추가됨에 따라 .md docs도 수정 필요(Benchmark 세션 추가)
|
말씀해주신 것들 바탕으로 다음과 같은 작업들을 진행했습니다.
vitest에 benchmark라는 기능이 있었군요! 덕분에 알게 되었습니다. 감사합니다! 또 부족한 부분 말씀해주시면 바로 반영해보겠습니다! |
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.
LGTM 🤗 modern-kit에 관심 갖고 기여해주셔서 다시 한번 감사의 말씀 드립니다
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #603 +/- ##
==========================================
+ Coverage 97.41% 98.37% +0.96%
==========================================
Files 164 172 +8
Lines 1470 1542 +72
Branches 361 396 +35
==========================================
+ Hits 1432 1517 +85
+ Misses 34 23 -11
+ Partials 4 2 -2
|
Overview
입력된 값이 최소값보다 작으면 최소값을, 최대값보다 크면 최대값을 반환합니다. 값이 범위 내에 있다면 그대로 반환합니다.
PR Checklist
Contributing Guide
매번 잘 참고하고 있습니다!
궁금한 점
changeset을 해주지 않아도 merge 될 때 알아서 버저닝이 되나요? 아니면 changeset 작업이 필요한가요? changeset-bot이 보여서요!