[TypeScript] 타입 시스템에 대한 개요

선영·2022년 11월 8일
0

TypeScript

목록 보기
2/5


~타입 애일리어스와 인터페이스의 상속(extends) 까지 수강

💡 타입 시스템에 대한 개요


타입 추론 (Types by Inference)

  • TypeScript는 JavaScript의 위의 레이어로 JS 구문(코드를 작성하는 방법)을 사용할 수 있으면서 타입 시스템을 구축할 수 있다.
  • 그렇기 때문에 TypeScript는 JavaScript가 동작하는 방식을 이해한다.

타입 정의하기 (Defining Types)

  • JavaScript에서의 기존 원시 타입 boolean, bigint, null, number, string, symbol, object와 undefined에서 TypeScript는 추가로 any, unknown, never, void가 있다.
  • 타입을 구축하기 위해 Interfaces and Types 두 가지 구문이 있다.

타입 애일리어스와 인터페이스

  • 나중에 객체지향프로그래밍을 하기 위해 인터페이스를 우선적으로 사용하고, 간단하게 특정 기능이 필요할 때 타입을 사용하기.
객체 지향(Object oriented) 프로그래밍이란? 
# 우리가 실생활에서 쓰는 모든 것을 객체라 하며, 
객체 지향 프로그래밍은 프로그램 구현에 필요한 객체를 파악하고 
각각의 객체들의 역할이 무엇인지를 정의하여 
객체들 간의 상호작용을 통해 프로그램을 만드는 것을 말한다.
  • ⭐️처음타입을 잘 잡아둬야한다.

✅ 각각의 장점

  • 타입 애일리어스는 자바스크립트의 변수, 매개변수, 리턴값에 type을 붙이는 것이라 갖다쓰기 편하다.
type A = { a: string };
const a: A = { a: 'hello' };

interface B { a: string }
const b: B = { a: 'hello' };
  • 인터페이스는 extends등의 키워드가 있어서 명확하다. 그리고 확장(여러번 선언)할 수 있다. 확장할 때 마다 합쳐진다.
interface A { a: string }
interface A { b: string }
const obj1: A = { a: 'hello', b: 'world' }

type B = { a: string }
type B = { b: string }
const obj2: B = { a: 'hello', b: 'world' }

타입 구성 (Composing Types)

  • 여러가지 타입을 조합하여 새로운 타입을 작성하는 유니언(Union) 제네릭(Generic) 두 가지 코드가 있다.
  • 유니언은 아래와 같이 여러타입 중 하나일 수 있음을 선언하는 것
// example1
type MyBool = true | false;
// example2
type WindowStates = "open" | "closed" | "minimized";
// example3
type OddNumbersUnderTen = 1 | 3 | 5 | 7 | 9;
  • 제네릭은 타입에 변수를 제공해주는 방법이다.
// example1
type StringArray = Array<string>;
// example2
type ObjectWithNameArray = Array<{ name: string }>;

구조적 타입 시스템 (Structural Type System)

  • 타입검사는 형태가 같은 경우엔 같은 것으로 간주한다. 이것을 덕타이핑, 구조적 타이핑이라고 부른다.
interface Point {
  x: number;
  y: number;
}

function printPoint(p: Point) {
  console.log(`${p.x}, ${p.y}`);
}

// "12, 26"를 출력합니다
const point = { x: 12, y: 26 };
printPoint(point);

☑️ 참고


profile
Superduper-India

0개의 댓글