-
Notifications
You must be signed in to change notification settings - Fork 2
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] Trim input #310
[Feat] Trim input #310
Conversation
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.
고생하셨습니다. 기능도 잘되고 코드도 깔끔하네요👍
projectName: projectName?.trim() ?? undefined, | ||
corrector: corrector?.trim() ?? undefined, | ||
corrected: corrected?.trim() ?? undefined, |
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.
제가 로직을 잘 몰라서 그런데 여기서 undefined가 나는경우 문제가 될 때는 없나요??
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.
정상적으로 동작하긴 합니다만, 제대로 백엔드 스키마를 찾아보니 말씀해주신대로 Optional 또는 null을 받도록 되어있더라구요..?
// 프론트엔드 인자 전달 시 사용하는 타입
export type EvalLogSearchArgs = Partial<{
projectName: string;
outstandingOnly: boolean;
corrector: string;
corrected: string;
sortOrder: EvalLogSortOrder;
first: number;
after: string;
}>;
export type EvalLogSearchForm = Omit<
EvalLogSearchArgs,
'after' | 'first' | 'outstandingOnly'
> & {
flag: string;
};
// 백엔드 스키마 autogen
export type GetEvalLogsQueryVariables = Exact<{
after?: InputMaybe<Scalars['String']>;
first?: InputMaybe<Scalars['Int']>;
corrector?: InputMaybe<Scalars['String']>;
corrected?: InputMaybe<Scalars['String']>;
projectName?: InputMaybe<Scalars['String']>;
outstandingOnly?: InputMaybe<Scalars['Boolean']>;
sortOrder?: InputMaybe<EvalLogSortOrder>;
}>;
export type InputMaybe<T> = Maybe<T>;
export type Maybe<T> = T | null;
Optional(인자를 전달하지 않는 것)과 undefined 인자를 전달하는 것에는 분명 차이가 있습니다.
tsconfig.json에서 exactOptionalPropertyTypes 옵션을 켜면 Optional 타입에 undefined를 전달하는 행위를 막을 수 있습니다. (Ref. https://www.typescriptlang.org/tsconfig#exactOptionalPropertyTypes)
저희 코드는 해당 옵션을 켜지 않아서 돌아가긴 합니다만, 옵션을 켜면 (autogen에서 만들어낸 Optional 타입까지 해당 옵션이 적용되기 때문에) 에러가 날 것으로 예상되며, 미리 저런 지점을 조심해서 짜는 것도 괜찮겠다는 생각을 했습니다 😄
후속 커밋으로 해당 내용을 수정하겠습니다.
Summary
Describe your changes
Issue number and link