최근에 둘의 차이가 뭐냐는 질문에 아는 정도로만 답했는데
더 있나 싶어서 찾아봤다
참고
type String = string
type Number = number
type Boolean = boolean
type ArrayList = Array<T>
type ObjType = {
name: string;
age: number;
}
//interface Obj = number;
// 'number' only refers to a type, but is being used as a value here.
interface Obj {
name: string;
age: number;
phone: string;
isStudent: boolean;
}
type GreetingType = (name: string) => string;
interface GreetingInterface {
(name: string): string
}
type Obj1 = {
name: string
}
type Obj2 = {
age: number
}
type Obj = Obj1 & Obj2
const obj: Obj = {
name: 'josoohyun',
age: 9
}
interface Obj1 {
name: string
}
interface Obj2 {
age: number;
}
interface Obj extends Obj1, Obj2 {
}
const obj:Obj = {
name:'soo',
age: 10,
}

class Dog {
name = 'ponge' // 속성
}
interface Animal extends Dog {
age: number
}
const animal:Animal = {
name:'hoya',
// name: 9, // 자동 타입 추론으로 숫자 타입 넣으면 에러남
age: 8
}
interface Obj {
name: string
}
interface Obj {
age: number;
}
const obj:Obj = {
name:'soo',
age: 10,
}

| type alias | interface | |
|---|---|---|
| 원시 타입 | ⭕️ | ❌ |
| 객체 타입 | ⭕️ | ⭕️ |
| 타입 병합 | `&`연산자로 가능 | extends 키워드 사용 또는 선언 병합 가능 |
| 중복 선언 | 에러 | 선언 병합 |
최근에 취업한 친구랑 얘기하다가 자기 회사 사람들 바보라고 type이랑 interface 차이도 말로 못 한다고 해서 내가 아는 게 다가 아닐까봐 걱정했다. 다행히 크게 모르진 않았던 것 같다 ㅎ
아는 개념이라도 정리하고 나니 말로 하기도 편해졌다 이제 계획대로라면 곧 이력서 넣고 면접 보러 다녀야하는 시즌이라 이런 개념들 복습 잘 해놔야겠다