[TS] 프로미스와 제네릭
TIL
프로미스의 타입 추론Promise 객체를 생성하고 3초 후 20을 반환하는 코드를 작성해보자.const promise = new Promise((resolve, reject) => { setTimeout(() => { resolve(20); }, 3000);});promise.then((response) => { console.log(response);}); Promise는 resolve로 전달하는 결과값의 타입을 자동으로 추론하지 못하고 unknown 타입으로 추론한다. resolve 타입 지정타입 변수에 타입을 지정하면 resolve 결과값의 타입이 정확히 추론된다. reject와 에러처리Promise의 catch 메서드에서 에러 매개변수는 항상 any 타입으로 추론된다. 그리고 타입 변수..
[TS] 제네릭 클래스
TIL
숫자 배열을 관리하는 NumberList 클래스를 만들어보자.class NumberList { constructor(private list: number[]) {} push(data: number) { this.list.push(data); } pop() { return this.list.pop(); } print() { console.log(this.list); }}list 필드는 private으로 설정하여 클래스 내부에서만 접근 가능하도록 했다.생성자에서 필드 선언과 초기화를 동시에 수행하며, push, pop, print 메서드로 배열을 조작한다. 만약 문자열 배열을 관리하는 StringList 클래스도 필요하다면 어떻게 해야 할까?제네릭 없이는 새로운 클래스를 만들어야..
[TS] 제네릭 인터페이스와 타입 별칭
TIL
제네릭 인터페이스제네릭은 인터페이스에도 적용할 수 있다. 인터페이스에 타입 변수를 선언하여 사용하면 된다.interface KeyPair { key: K; value: V;} 그리고, 변수의 타입으로 정의하여 사용할 수 있다.let keyPair: KeyPair = { key: "key", value: 0,};let keyPair2: KeyPair = { key: true, value: ["1"],};이때 주의해야 할 점은, 제네릭 인터페이스는 제네릭 함수와 달리 변수의 타입으로 정의할 때 반드시 와 함께 타입 변수에 할당할 타입을 명시해야 한다는 것이다.제네릭 함수는 매개변수에 제공되는 값의 타입을 기준으로 타입 변수를 추론할 수 있지만, 인터페이스는 마땅히 추론할 수 있는 값이 없기 때문이..