제네릭을 통해 호출하는 방식에 따라 다양한 타입으로 작동하도록 의도할 수 있습니다. ✨ 제네릭 함수 function identity(input: T){ return input } const identity2 = (input: T) => input; 화살표 함수의 제네릭은 .tsx 파일에서 JSX 구문과 충돌합니다. 명시적 제네릭 호출 타입 function logWrapper(callback: (input: Input) => void) { return (input: Input) => { console.log("Input:", input); callback(input) } } logWrapper((input: string) => { console.log(input.length); }) logWrapper((..
카카오 로그인을 구현하기 위해서 코드를 작성하고 있는데, 예상치 못한 부분에서 오류가 났습니다. 카카오톡 로그인은 위와 같은 과정으로 구현할 수 있습니다. 카카오 로그인에 대한 자세한 내용은 아래 공식문서를 참조하세요! Kakao Developers 카카오 API를 활용하여 다양한 어플리케이션을 개발해보세요. 카카오 로그인, 메시지 보내기, 친구 API, 인공지능 API 등을 제공합니다. developers.kakao.com 오류가 왜 났는지 결론부터 말씀드리자면, 인가코드로 토큰을 요청하는데 Strict-Mode 때문에, fetch 요청이 두 번 이루어 지게 되면서 오류가 난 것이었습니다. const Auth = () => { const params = useSearchParams(); const co..
✨ top 타입 top 타입은 시스템에서 가능한 모든 값을 나타내는 타입입니다. any any 타입은 top 타입처럼 작동할 수 있지만, 타입 검사를 수행하지 않도록 명시적으로 지시합니다. 즉 타입 오류를 보고하지 않습니다. let anyValue: any; anyValue = "ABC" // OK anyValue = 123 // OK function greet(name: any){ console.log(`hi ${name.toUpperCase()}!`) } greet({name: "ABC"}) // OK unknown unknown 타입은 진정한 top타입 입니다. 타입의 값을 제한적으로 취급합니다. function greet(name: unknown){ console.log(`hi ${name.toU..
이번에 두 개 이상의 쿠키를 설정하는 방법을 몰라서 삽질을 했습니다. 다른 분들은 저처럼 삽질하지 마시라고 기록합니다!🤣 우선 기본적인 쿠키 설정 방법 예시입니다. ✨ 쿠키 설정 예시 import { serialize } from "cookie"; export async function POST(res: Response) { ... const ACCESS_SERIALRIZE = serialize("kakaoAccessToken", access_token, { httpOnly: true, secure: process.env.NODE_ENV === "production", sameSite: "strict", maxAge: expires_in, path: "/", }); return NextResponse.j..
✨ 클래스 확장 클래스 역시 extends 키워드를 사용하여 확장할 수 있습니다. class Teacher { teach() { console.log("teach") } } class StudentTeacher extends Teacher { learn() { console.log("learn") } } 할당 가능성 확장 파생된 인스턴스는 기본 클래스 또는 하위 클래스를 충족하는데 사용할 수 있습니다. class Lesson { subject: string constructor(subject: string){ this.subject = subject; } } class OnlineLesson extends Lesson { url: string; constructor(subject: string, url:..
✨ 클래스 메서드 class Greeter { message: string constructor(message: string){ this.message = message; } greet(name: string){ console.log(`${this.message} ${name}`) } } new Greeter("hi").greet("Jack") // OK new Greeter().greet("Jack") // ERROR Expected 1 arguments, but got 0. new Greeter("hi").greet() // ERROR Expected 1 arguments, but got 0. ✨ 클래스 속성 클래스 속성을 읽거나 쓰려면 명시적으로 선언해야 합니다. 인스턴스에 존재하지 않는 멤버에 접..