티스토리 뷰
⚡️ 인터페이스
상호간에 약속된 규칙
타입에 이름을 지어주는 또 다른 문법 + 객체의 구조를 정의하는 데 특화된 문법으로 타입 별칭에서는 제공하지 않는 상속, 합침 등의 특수한 기능을 제공한다.
interface Person {
readonly name: string;
age?: number;
};
const person:Person = {
name: 'kiji',
// age: 28, -> 선택적 프로퍼티
};
person.name = '기지'; // ⚡️❌ -> 읽기전용으로 재할당이 불가능
인터페이스를 정의하고 타입 주석과 함께 사용해 변수의 타입을 정의하며 기본적인 기능을 타입 별칭과 거의 같다.
⚡️ 메소드 타입
함수 타입 표현식을 이용하거나 호출 시그니쳐를 이용해 메소드 타입을 정의한다.
interface Person {
readonly name: string;
age?: number;
// 메소드도 인터페이스에서 타입 정의가 가능
// 함수 타입 표현식
// sayHi: ()=> void;
// 또는 호출 시그니쳐를 이용 -> 메소드 이름이 소괄호 앞에 붙음
sayHi(): void;
// 매개변수에 따라 다르게 호출 -> 오버로드 시그니쳐 만들기
sayHi(a:number, b:number): void;
};
// sayHi를 매개변수에 따라 다르게 정의하는 경우 -> 함수타입 표현식이 아닌 호출 시그니쳐로 정의
person.sayHi();
person.sayHi(1, 2)
하지만 메소드의 오버로딩을 구현하기 위해서는 호출 시그니쳐를 이용해야한다. 함수 타입 표현식을 이용할 시, 동일한 이름의 함수를 두 번 정의하는 것과 같기 때문!!
⚠️ 인터페이스 이용시 주의할 점 ⚠️
인터페이스에서는 유니온이나 인터섹션 타입을 정의할 수 없다.
인터페이스로 만든 타입을 유니온 또는 인터섹션으로 이용해야 할 경우 타입 별칭과 함께 사용하거나 타입 주석에서 직접 사용해야 한다.
// 인터페이스 객체 타입은 유니온이나 인터섹션 불가능
// -> 타입 별칭 또는 타입 주석에 사용
// 타입 별칭
type Person1 = Person | number;
type Person2 = Person & string & number;
// 타입 주석
const person2: Person | string = {
name: 'kiji',
sayHi: function(){
console.log('Hi');
}
}
한 입 크기로 잘라먹는 타입스크립트(TypeScript) - 인프런 | 강의
문법을 넘어 동작 원리와 개념 이해까지 배워도 배워도 헷갈리는 타입스크립트 이제 제대로 배워보세요! 여러분을 타입스크립트 마법사🧙🏻♀️로 만들어드립니다., 프론트엔드의 피할 수
www.inflearn.com
728x90
'코딩 > 한 입 크기로 잘라먹는 타입스크립트' 카테고리의 다른 글
[TypeScript] 인터페이스 선언 합침 (0) | 2023.09.05 |
---|---|
[TypeScript] 인터페이스 확장 (0) | 2023.09.05 |
[TypeScript] 사용자 정의 타입가드 (0) | 2023.09.04 |
[TypeScript] 함수 오버로딩 (0) | 2023.09.02 |
[TypeScript] 함수 타입의 호환성 (0) | 2023.09.02 |
최근에 올라온 글
- Total
- Today
- Yesterday
TAG
- 번들링
- 개발
- 타입스크립트
- 오블완
- 자바스크립트
- React.JS
- 상태관리
- 정처기필기
- 웹팩
- git 오류
- 인증
- cdd
- nextjs
- css
- javascript
- HTML
- React
- 로컬 저장소
- 프론트엔드
- useRef
- Next.js
- styled-component
- 클론코딩
- 데이터요청
- 프레임워크
- 부트캠프
- 티스토리챌린지
- 보안
- 띵동코딩
- 코드스테이츠
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
250x250