function getData<T>(data: T[]): T[] {
return data
}
getData<string>(['hi','hello'])
getData<number>([10, 9, 8, 7])
getData<boolean>([true, false, true])
선언시 먼저 타입 잡고 자동으로 뒤쪽 인식
간편!
모듈의 버전별로 option값이 다름
공식 문서 통해 option값 체크 후 맞는 형식으로 작성(특히 객체 내 key값이나, 함수 인자값)
//express를 이용한 쿠키 옵션 설정시 발생한 상황
const cookieOption = {
domain: process.env.DOMAIN,
path: "/",
maxAge: 30 * 60 * 1000,
sameSite: "none",
httpOnly: true,
secure: true,
};
res.cookie("authorization", token, cookieOption);
/*
이 호출과 일치하는 오버로드가 없습니다.
오버로드 1/3('(name: string, val: string, options: CookieOptions): Response<any, Record<string, any>>')에서 다음 오류가 발생했습니다.
'{ domain: string | undefined; path: string; maxAge: number; sameSite: string; httpOnly: boolean; secure: boolean; }' 형식의 인수는 'CookieOptions' 형식의 매개 변수에 할당될 수 없습니다.
'sameSite' 속성의 형식이 호환되지 않습니다.
'string' 형식은 'boolean | "none" | "lax" | "strict" | undefined' 형식에 할당할 수 없습니다.
오버로드 2/3('(name: string, val: any, options: CookieOptions): Response<any, Record<string, any>>')에서 다음 오류가 발생했습니다.
'{ domain: string | undefined; path: string; maxAge: number; sameSite: string; httpOnly: boolean; secure: boolean; }' 형식의 인수는 'CookieOptions' 형식의 매개 변수에 할당될 수 없습니다.ts(2769)
const cookieOption: {
domain: string | undefined;
path: string;
maxAge: number;
sameSite: string;
httpOnly: boolean;
secure: boolean;
}
*/
const newOption = {
...cookieOption,
sameSite: "none" as "none"
}
//모듈 내의 정의된 타입으로 강제로 입력해줌으로서 해결 ("none" type)
//가변값의 경우 이런 해결방식은 좋아보이지 않으나
//현재 상황에서는 옵션을 변경할 일이 없어 사용해도 무방하다고 판단함