구름 아카데미 후기 - 6

Rivelog·2023년 9월 8일

회고록

목록 보기
10/19

구름 아카데미 후기 4-4

  • 타입 스크립트 완강
  • 강의를 들으면서 중요하거나 머리에 바로 안들어 오는 부분을 메모 했다.
  • 두고두고 필요하거나 익숙해질 때까지 꺼내봐야겠다.

제네릭 함수

function fuc<T>(value:T):T{
return value; 
}

제너릭 함수 - 프로미스

  • 프로미스의 resolve,reject 함수의 타입을 추론하지못함
    Ex)
const promise = new Promise<number>((res,rej)=>{});  //이런 형태가 되야 한다~~

타입 조작하기

인덱스드 엑세스 타입

  • 특정 프로퍼티에 타입을 추출
    Ex)
interface Post {
	 title: string;
  	content: string;
 	 author: {
    	id: number;
   	 name: string;
    	age: number; // 추가
  	};
}

적용전)

function printAuthorInfo(author: { id: number; name: string, age: number }) {
	// age 프로퍼티도 추가
 console.log(`${author.id} - ${author.name}`);
}

적용후)

function printAuthorInfo(author: Post[“author”]) { //인덱스에 아예 없는 프로퍼티 또는 변수를 사용할수 없다!!
	// age 프로퍼티도 추가
 console.log(`${author.id} - ${author.name}`);
}
  • key of 연산자
    타입의 모든 프로퍼티를 추출
interface Person {
  name: string;
  age: number;
  location: string; // 추가
}

function getPropertyKey(person: Person, key: keyof Person) { // key of Person 는 “name”|”age”|”location”과 같다
  return person[key];
}

const person: Person = {
  name: "이정환",
  age: 27,
};

타입 스크립트에서 typeof는 특정 변수 타입을 추론하는 기능을 가진다.

맵드타입

타입을 가져와서 변형할때 사용
type 안에서만 사용가능 interface 불가
객체의 모든 key를 유니언으로 써준다. Key:value 형태

type PartialUser ={
	[key in ‘id’|’name’|’age’]?:User[key];
};

조건부 타입

  • 삼항 연산자 사용한 형태
    Ex)
type A = number extends string ? string : number;

infer

  • 특정 타입을 추론하는 문법
type ReturnType<T> = T extends () => infer R ? R : never;

type FuncA = () => string;

type FuncB = () => number;

type A = ReturnType<FuncA>;
// string

type B = ReturnType<FuncB>;
// number

type C = ReturnType<number>;
// 조건식을 만족하는 R추론 불가능
// never
  • 유틸리티 타입

Partial

  • 부분적인
  • 특정 객체 타입의 모든 프로퍼티를 선택적 프로퍼티로 바꿔주는 타입
  • Ex) 벨로그 임시 저장글
    Required
  • 특정 객체 타입의 모든 프로퍼티를 필수 프로퍼티로 바꿔주는 타입
    Readonly
  • 특정 객체 타입에서 모튼 프로퍼티를 읽기전용으로 만들어주는 타입
    Pick<T,K>
  • 객체 타입으로부터 특정 프로퍼티만 골라내는 타입
    Omit<T,K>
  • 객체 타입으로부터 특정 프로퍼티만 제거하는 타입
    Record<K,V>
  • 객체에 프로퍼티를 만들어주는 타입
    //맵드 기반

Exclude<T,U>

  • T에서 U를 제거하는 타입
    Extract<T,U>
  • T에서 U를 추출하는 타입
    ReturnType
  • 함수의 반환값 타입을 추출하는 타입

출처: 한 입 크기로 잘라먹는 타입스크립트

profile
Just Do It

0개의 댓글