Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바스크립트
- github
- LinkSnap
- nodejs
- 백준
- 국비지원취업
- BFS
- 호이스팅
- html/css/js
- 컴퓨터공학
- 패스트캠퍼스
- computerscience
- 코테
- js
- 컴퓨터과학
- CS
- Javascript
- DFS
- 알고리즘
- 그리디
- 국비지원
- CSS
- 부트캠프
- cpu
- 코딩테스트
- KAKAO
- 야놀자
- 너비우선탐색
- git
- 프론트엔드개발자
Archives
- Today
- Total
My Boundary As Much As I Experienced
TypeScript) 커스텀 타입 vs 인터페이스 본문
두 개 중 뭘 사용해야 되나? 거의 비슷해서 서로 immigration해도 문제 없는 경우가 대부분이긴 한데
사소한 차이점들이 있긴 하다.
차이1: 문법
커스텀 타입은 등호를 이용하여 값을 할당한다.
// 타입은 등호를 활용하여 값을 할당해준다.
type Credit = number
type People = {
name: string;
age: number;
}
type Id = string | number
인터페이스는 객체 형식꼴로 만든다.
// 인터페이스는 객체 형식 혹은 클래스 형식과 비슷하게 생겼다.
interface GreenThings {
tree: string[];
jewel: string[];
brand: string[];
}
interface Korean {
name: string;
idCard: number;
eatKimchi(): void {
console.log("Taste Good")
}
}
차이2: 만들수 있는 범위
type: 유니언 타입, 함수 타입, 원시형 타입도 가능하다. 물론 객체도 가능하다.
interface: 객체 형식만 가능하다.
type이 더 유연해서 좋아보일지 몰라도 정확히 객체를 만들려는 의도가 있다면 의미적으로 interface를 사용하는게 좋다.
물론 다들 취향껏 사용하긴 한다.
차이3: interface로는 클래스를 만들 수 있다.
interface로 틀을 만든 다음에 클래스도 그에 맞춰 만들면, 적어도 어떤 메소드는 있겠구나 유추할 수 있게 된다.
⇒ 사실 클래스가 일정한 형태를 만들기 위한건데 그 클래스를 일정한 형태로 만들기 위해 쓰다니..
⇒ 일정한 형태를 만들기 위해 일정한 형태를 만드는거 아닌가?…
class Person implements Greetable {
//class인데 interface인 Greetable의 형식을 상속받는다.
readonly name: string;
age = 30;
constructor(n: string) {
this.name = n;
}
class Person implements Greetable, Named { // 2개 중첩 가능
//class인데 interface인 Greetable의 형식을 상속받는다.
readonly name: string;
age = 30;
constructor(n: string) {
this.name = n;
}
또한 인터페이스는 js로 컴파일 될 때 그 흔적이 남지 않는다. 자바스크립트엔 없는 기능이니까. 개발전용기능으로 보면 된다.
'FrontEnd > TypeScript' 카테고리의 다른 글
TypeScript) 타입가드 (1) | 2023.10.20 |
---|---|
TypeScript) 교차 타입 (0) | 2023.10.20 |
TypeScript) enum (0) | 2023.10.18 |
TypeScript) 배열과 튜플 타입 (1) | 2023.10.18 |
TypeScript) 객체 타입 (0) | 2023.10.17 |