티스토리 뷰
타입과 인터페이스는 대부분 기능이 비슷하지만, 가장 구분되는 점은 타입은 만들어지고 나면 새로운 프로퍼티를 추가할 수 없지만, 인터페이스는 항상 가능하다는 것이다.
인터페이스 확장 with extends
interface Animal {
name: string
}
interface Bear extends Animal {
honey: boolean
}
const bear = getBear()
bear.name
bear.honey
타입 확장 with intersection
type Animal = {
name: string
}
type Bear = Animal & { honey: Boolean }
const bear = getBear()
bear.name
bear.honey
이렇듯 확장해서 새로운 타입 또는 인터페이스를 정의하는 것은 둘다 가능하다.
이미 존재하는 인터페이스에 새로운 필드 추가 - 가능
interface Window {
title: string
}
interface Window {
ts: TypesScirptAPI
}
const src = 'const a = "Hello World"';
window.ts.transpileModule(src, {});
이미 존재하는 타입에 새로운 프로퍼티 추가 - 불가능
type Window = {
title: string
}
type Window = {
ts: TypeScriptAPI
}
// Error: Duplicate identifier 'Window'
Ref
'공부일지(TIL) > JavaScript' 카테고리의 다른 글
[JavaScript] 어휘 구조 (0) | 2021.03.23 |
---|---|
[JavaScript] Protobuf 직렬화 (0) | 2021.03.18 |
[JavaScript] 자바스크립트 클래스 필드와 이벤트 핸들러 (0) | 2021.03.18 |
[JavaScript] 프로토타입 (0) | 2021.03.15 |
[JavaScript] 스코프, 스코프 체인, 클로저 (2) | 2021.03.12 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- SQL
- jQuery
- Conflict
- GIT
- til
- 자바
- oracle
- 제네릭스
- react
- getter
- useEffect
- Session
- youtube data api
- 리덕스
- 포인터 변수
- CSS
- Prefix Sums
- c언어
- Redux
- 인스턴스
- 알고리즘
- Java
- package.json
- 깃
- 개발 공부
- linkedlist
- Data Structure
- this
- rxjs
- JavaScript
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함