타입 정의 방법

juiuj·2024년 9월 27일
0

TS-study

목록 보기
2/11

Type Script 문법

함수의 타입 정의

function sum(a: number, b: number) : number{
	return a+b;
}
  • 함수 선언: sum이라는 이름의 함수를 정의하고 있.
  • 매개변수 타입:
  • 이 함수는 숫자 두 개를 입력받는 코드로 a: numberb: number: 두 개의 매개변수 a와 b는 모두 숫자(number) 타입으로 명시되어 있음.
  • 반환 타입:
  • : number 이 부분은 함수의 반환값이 숫자 타입이어야 한다는 것을 나타냄.
  • return a + b: 두 매개변수 a와 b를 더한 값을 반환함. 이 연산 결과도 숫자이므로 함수의 반환 타입 조건을 만족함.

알아야 하는 타입스크립트 개념

  • 함수의 타입 정의 방법
  • 타입 추론
  • 함수의 파라미터 타입 정의
  • 함수의 반환 타입 정의
    tip 타입표기 - 타입을 정의하는 방식: number:string

타입 스크립트 기본타입

  • 문자열(String): 자바스크립트 변수의 타입이 문자열인 경우
let str: string = 'hi';

: 를 이용해서 자바스크립트 코드에 타입을 정의하는 방식을 타입 표기라고 함.

  • 숫자(number)
let num: number = 10;
  • 진위(boolean)
let isLoggedIn: boolean = false;
  • 객체(object) : interface, class의 상위타입. 타입을 object로 정의하면, any 타입 처럼 모든 타입의 값을 정의할 수 있음
let obj: object = {name: 'NAME', age:29};
  obj={A: 'A', B: 'B'};

❗️객체를 object 타입으로 정의하는 경우 타입스크립트를 사용한 목적이 애매해질 수 있음.
(타입스크립트는 타입 검사에 엄격한 편임)

  • interface로 구현
          interface IUser {
            name: string,
            age : number
          }

          let obj: IUser = { name: 'NAME', age: 29 };
  • type으로 구현
          type UserType = {
            name: string,
            age : number
          }

          let obj: UserType = { name: 'NAME', age: 29 };

  • 배열 (array)
let arr: number[] = [1,2,3];
// 제네릭 사용
  let arr: Array<number> = [1,2,3];
  • 튜플(tuple): 튜플은 배열의 길이가 고정되고 각 요소의 타입이 지정되어 있는 배열 형식
let arr: [string, number] = ['hi', 10];

만약에 정의하지 않은 타입, 인덱스로 접근할 경우 오류 남.

arr[1].concat('!'); // Error, 'number' does not have 'concat'
arr[5] = 'hello'; // Error, Property '5' does not exist on type '[string, number]'
  • 이넘(enum): 흔하게 쓰이는 타입으로 특정 값(상수)들의 집합을 의미하며 열거형 타입을 정의하는 데 사용됨. 이넘은 특정 값들의 집합을 이름으로 관리하고, 이러한 값을 논리적으로 그룹화할 수 있게 해줌.
enum Avengers { 
  Capt, 
  IronMan, 
  Thor 
}

let hero: Avengers = Avengers.Capt;

❗️ enum은 인덱스 번호로도 접근가능함.

enum Avengers { 
  Capt, 
  IronMan, 
  Thor 
}

let hero: Avengers = Avengers[0];
  • any: 특정 데이터의 타입을 잘 모르거나 자바스크립트 프로젝트에 타입스크립트를 점진적으로 적용할 때 사용하면 좋은 타입임. 단어 의미 그대로 모든 타입에 대해서 허용한다는 의미를 갖고 있음.
    그러나 any 타입을 많이 사용하면 사용할수록 타입스크립트의 장점이 사라질 수 있음.
let str: any = 'hi';
let num: any = 10;
let arr: any = ['a', 2, true];
  • void: 반환 값이 없는 함수의 반환타입. return이 없거나 return이 있더라도 반환하는 값이 없으면 함수의 반환 타입을 void로 지정함.
function printSomething(): void {
  console.log('sth');
}

function returnNothing(): void {
  return;
}
  • never: 절대 발생하지 않는 값을 의미하는 타입임. 함수가 반복문이나 에러 핸들링으로 인해 함수의 끝에 절대 도달하지 않는 경우에 never 타입을 사용할 수 있음
// 이 함수는 절대 함수의 끝까지 실행되지 않는다는 의미
function loopForever(): never {
  while (true) {
    // ..
  }
}

function neverEnd(): never {
  throw new Error('unexpected');
}

0개의 댓글