2023. 6. 1. 05:57ㆍ프론트엔드 과거의 흔적
1. 이넘(Enum)
이넘은 특정한 값들의 집합을 의미하는 자료형입니다.
타입스크립트의 이넘에는 문자형 이넘과 숫자형 이넘이 존재하고 이 둘의 조합으로도 정의될 수 있습니다.
1-1. 숫자형 이넘
enum Direction {
Up = 1,
Down,
Left,
Right
}
//Up - 1
//Down - 2
//Left - 3
//Right - 4
//초기 값부터 1씩 증가합니다
//만약 초기 값을 주지 않으면 0부터 증가합니다
위 코드에서 볼 수 있는 것처럼 초기 값부터 1씩 증가하지만, 임의로 값을 지정할 수도 있습니다.
enum Color {
Red = 1,
Blue = 3,
Green = 5
}
//수동으로 값 지정이 가능합니다
1-2. 문자형 이넘
문자형 이넘은 숫자형 이넘과 거의 비슷하지만 문자형 이넘은 값을 전부 다 특정 문자열이나 다른 이넘 값으로 초기화해주어야 합니다.
enum Direction {
Up = "up",
Down = "down".
Left = "left",
Right = "right"
}
//문자형 이넘은 모든 값을 문자열 혹은 다른 이넘 값으로 초기화해주어야 합니다
1-3. 역매핑(Reverse Mappings)
리버스 매핑은 숫자형 이넘에만 존재하는 특징입니다. 이넘의 키로 값을 얻을 수 있고, 값으로 키를 얻을 수도 있습니다.
enum Enum {
A
}
let a = Enum.A; //값으로 키 획득
let nameOfA = Enum[a]; //키로 값 획득
2. 인터페이스
타입스크립트에서 인터페이스는 일반적으로 타입 체크를 위해 사용됩니다. 인터페이스는 변수, 함수, 클래스에 사용할 수 있고 인터페이스에 선언된 프로퍼티 혹은 메서드의 구현을 강제하여 일관성을 유지하도록 도와줍니다. 자바스크립트에서는 따로 인터페이스를 지원하지 않지만 타입스크립트에서는 interface 예약어를 사용해 인터페이스를 생성할 수 있습니다.
interface User {
name: string;
age: number;
}
const user: User = {
name: "anna",
age: "20"
}
//인터페이스를 선언합니다
위 코드와 같이 인터페이스를 생성한 후 인터페이스를 사용해 User 인터페이스의 프로퍼티와 동일한 구조를 가진 user 객체를 선언할 수 있습니다. 즉 인터페이스는 객체의 구조를 정의하는 용도로 사용됩니다.
interface User {
name: string;
age: number;
}
const user: User = {
age: "20"
name: "anna",
}
//순서가 바뀌어도 정상적으로 선언됩니다
const user: User = {
age: "20"
}
//정의된 프로퍼티보다 적게 작성했기 때문에 에러가 발생합니다
const user: User = {
name: "anna",
age: "20".
job: "developer"
}
//정의된 프로퍼티보다 많게 작성했기 때문에 에러가 발생합니다.
* 인터페이스의 첫 글자를 대문자로 시작하는 것은 네이밍 컨벤션이므로 지켜주어야 합니다. 인터페이스는 객체의 타입을 정의하고, 객체가 대문자로 시작하는 것과 유사하기 때문에 일관성 있는 코드 작성을 위해 이러한 관례를 따르는 것입니다.
만약 인터페이스의 프로퍼티 중 특정한 조건에서만 존재하는 프로퍼티가 있을 경우 ? 연산자를 사용하여 선택적 프로퍼티를 작성할 수도 있습니다.
interface User {
name: string;
age?: number;
}
const user: User = {
name: "anna"
}
//age 프로퍼티가 없지만 정상적으로 선언됩니다
'프론트엔드 과거의 흔적' 카테고리의 다른 글
[TypeScript]-프로젝트 환경 구성 (0) | 2023.05.30 |
---|---|
[JavaScript]-Set 객체 (0) | 2023.05.05 |
[HTML5]-웹 표준과 웹 접근성 (0) | 2023.04.29 |
[JavaScript]-DOM (문서 객체 모델) (0) | 2023.04.28 |
[React]-JSX 문법 (0) | 2023.04.22 |