what i learned/TIL

[TIL] 2021/03/05 Sat - 타입스크립트의 타입

zubetcha 2022. 3. 5. 22:31

 

 

Today I Learned

 

오늘은 타입스크립트의 타입과 인터페이스에 대해서 공부했다.

 

타입스크립트의 기본 타입

 

타입스크립트의 기본 타입에는 크게 12가지가 있으며, 타입을 정의할 때는 콜론(:)과 함께 타입을 선언하는 타입 표기(Type Annotation)라고 하는 방식을 사용한다.

 

- Boolean

- Number

- String

- Object

- Array

- Tuple

- Enum

- Any

- Void

- Null

- Undefined

- Never

 

String

let str: string = 'hello'

 

Number

let num: number = 10

 

Array

Array는 타입을 선언할 때 아래의 두 가지 표기 방식을 사용할 수 있다. 두 방식 모두 타입은 Array이며, Array의 요소로서 number만 담을 수 있음을 정의한 것으로, 두 번째 표기 방식은 배열을 리터럴로 표현한 것일뿐 Array<number> 와 동일한 의미를 가진다.

 

let items: Array<number> = [1, 2, 3]
let items: number[] = [1, 2, 3]

 

Tuple

Array에서 모든 인덱스의 타입까지 정의할 때 사용한다. 리터럴 표기 방식의 [] 안에 각 인덱스의 타입을 지정한다.

 

let myAddress: [string, number] = ['boramae', 24]

 

Object

객체를 정의할 때는 Object 타입까지만 정의하거나 Object value의 타입까지 구체적으로 정의할 수도 있다.

 

let obj: object = {}

// 구체적 정의
let person: { name: string; age: number } = {
  name: 'zubetcha',
  age: 29,
}

 

Boolean

let show: boolean = true

 

타입스크립트의 함수 타입

 

파라미터와 반환 값 타입

함수의 타입을 정의할 때는 파라미터의 타입과 반환 값의 타입을 정의할 수 있다. 함수의 파라미터에 타입을 정의하면 해당 함수의 파라미터로 받아야 하는 값의 타입과 개수를 엄격하게 확인하여 제한하는 특성을 가지게 되어 정확히 일치하지 않으면 에러를 발생시킨다. 반면에 자바스크립트의 경우 예를 들어 함수의 정의부에 세 번째, 네 번째 파라미터가 정의되어 있지 않은데도 실행문에서 세 번째, 네 번째 파라미터를 넘겨도 에러를 발생시키지 않는다.

 

// 함수의 파라미터에 타입 정의
function sum(a: number, b: number) {
  return a + b;
}

// 함수의 반환 값에 타입 정의
function add(): number {
  return 10;
}

// 함수에 타입 정의
function sum2(a: number, b: number): number {
  return a + b;
}

 

Optional Parameter

함수의 파라미터 개수를 필요에 따라 유연하게 설정하고 싶다면 물음표를 사용하면 된다.

 

function log(a: string, b?: string) {}
log('hello world')
log('hello ts', 'abc')

 


인터페이스 섹션도 강의를 들었는데 공부가 더 필요할 것 같아서 내일 더 찾아보고 정리해 봐야겠다.