티스토리 뷰
[TS] 타입스크립트 자주 사용되는 utility 정리
@ keyof : 키값을 타입으로 추출합니다.
// keyof : 키값을 타입으로 추출합니다.
interface User{
id : number;
name : string;
age : number;
gender : "m" | "f";
}
type UserKey = keyof User; // 'id' | 'name' | 'age' | 'gender'
const uk:UserKey = "id";
const uk2:UserKey = "ss"; // 에러 : Type '"ss"' is not assignable to type 'keyof User'
@ Partial<T> : 타입을 모두 optional 하게 바꿔줍니다.
// Partial<T> : 타입을 optional 하게 바꿔줍니다.
interface User{
id : number;
name : string;
age : number;
gender : "m" | "f";
}
// Partial<User>는 아래와 같습니다.
// interface User{
// id? : number;
// name? : string;
// age? : number;
// gender? : "m" | "f";
// }
let admin : Partial<User> = {
id : 1,
name : "Bob",
}
@ Required<T> : 타입을 모두 필수값으로 바꿔줍니다.
// Required<T> : 타입을 모두 필수값으로 바꿔줍니다.
interface Admin {
id :number;
name : string;
age?: number;
}
// Required<Admin> 은 아래와 같습니다.
// interface Admin {
// id :number;
// name : string;
// age: number;
// }
let tom : Required<Admin> = {
id : 1,
name : "Bob"
}
// age가 필수로 바뀌었기 때문에 위와 같이 작성하면 에러가 발생합니다.
// 에러를 해결 하기 위해서는 아래와 같이 age를 추가해주어야 합니다.
let jack : Required<Admin> = {
id : 1,
name : "Bob",
age : 10
}
@ Readonly<T> : 타입을 읽기전용으로 바꿔줍니다.
// Readonly<T> : 타입을 읽기전용으로 바꿔줍니다.
interface Guest {
id : number;
name : string;
age?: number;
}
let annie : Readonly<Guest> = {
id : 1,
name : "Bob",
}
annie.id = 4; // 에러발생 : Readonly타입일때는 값을 바꿀수 없다.
@ Record<K,T> : 키값과 타입을 지정해준다.
// Record<K,T> : 키값과 타입을 지정해준다.
// interface Score {
// '1' : "A" | "B" | "C" | "D";
// '2' : "A" | "B" | "C" | "D";
// '3' : "A" | "B" | "C" | "D";
// '4' : "A" | "B" | "C" | "D";
// }
// const score = {
// 1 : "A",
// 2 : "C",
// 3 : "B",
// 4 : "D",
// }
// 위의 주석된 코드와 아래의 코드는 동일하게 동작한다.
type Grade = "1" | "2" | "3" | "4"
type Score = "A" | "B" | "C" | "D" | "F"
const score : Record<Grade, Score > = {
1 : "A",
2 : "C",
3 : "B",
4 : "D",
}
// 사용예시2
interface Student {
id : number;
name : string;
age : number;
}
function isValid(user : Student) {
const result : Record<keyof Student, boolean> = {
id :user.id > 0,
name : user.name !== "",
age : user.age > 0,
};
return result;
}
@ Pick<T,K> : 원하는 타입을 뽑아서 사용할 수 있다.
@ Omit<T,K> : 특정 타입을 빼고 사용할 수 있다.
// Pick<T,K> : 원하는 타입을 뽑아서 사용할 수 있다.
const bob : Pick<Teacher, "id" | "name"> = {
id : 0,
name : "Bob",
};
// Omik<T,K> : 특정 타입을 빼고 사용할 수 있다
const jane : Omit<Teacher, "age" | "gender"> = {
id : 0,
name :"Jane"
}
@ Exclude<T1,T2> : Type T1에서 T2타입과 겹치는 타입을 제외시켜준다.
@ NonNullable<Type> : Type에서 undefined, null을 제외시켜준다.
// Exclude <T1, T2> : Type T1에서 T2타입과 겹치는 타입을 제외시켜줍니다.
type T1 = string | number | boolean;
type T2 = Exclude <T1, number | string > // T2 는 boolean만 남게 됩니다.
// NonNullable<Type> : Type에서 undefined, null을 제외시켜줍니다.
type T3 = string | null | undefined | void;
type T4 = NonNullable<T1> // string과 void만 남게 됩니다.
'개발일기 > TS' 카테고리의 다른 글
[TS] 타입스크립트에서 DOM 조작하기, HTML 조작하기. (0) | 2022.03.05 |
---|---|
[TS] 배열의 타입을 체크하는 방법 Array.isArray() (0) | 2022.03.04 |
[TS] Typescript Generic 예시코드. (0) | 2022.02.21 |
[TS] Typescript 추상클래스 (0) | 2022.02.21 |
[TS] Typescript 접근제한자 : public, private, protected + 정적메소드 static 예시 코드 (0) | 2022.02.21 |
댓글
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- shortid
- 산안기 합격률
- 전력공학
- 전자기학
- cbt
- dummydata
- 전기공사기사
- 게더타운
- 전기기사실기CBT
- gathertown
- 전기기사필기
- nextjs
- 전기산업기사
- TS
- 전기기사실기단답
- 전기기사 필기
- 산업안전기사 실기
- 전기기기
- 전기기사
- zep
- KEC반영
- TypeScript
- 게더타운맵
- fakerjs
- JavaScript
- React
- 개더타운
- 실기CBT
- 산업안전기사
- 모두CBT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
글 보관함