[Typescript] 변수 선언과 타입지정

허북이_·2022년 11월 15일
0

Typescript

목록 보기
1/1
post-thumbnail

TS 부시기 1장.

변수선언과 타입지정

변수 선언 시 타입지정이 가능합니다.

타입을 지정해놓으면 값이 의도치 않게 변경될 경우 에러메세지를 띄워줍니다.

let name :string = 'kim'; // 문자열만 받음
let age :number = 25; // 숫자만 받음

// array 혹은 object
let name :string[] = ['kim', 'park'] // 문자열 요소인 배열만 받음
let age :{ age : number } = { age : number } // age에 대한 값에 숫자만 받음

타입으로 쓸 수 있는 것들

string, number, boolean, bigint, null, undefined, [], {} 등이 있습니다.

let name :string | number = 'kim'  // 문자열, 숫자 둘 다 받을 수 있음

한 변수에 여러가지 타입의 데이터가 들어올 수 있다면 | 기호를 이용해 or 연산자를 표현할 수 있습니다.

type nameType = string | number;
let name :nameType = 'kim';

type 키워드

type 키워드를 이용해 타입을 변수처럼 담아서 사용할 수 있습니다.

type NameType = 'kim' | 'park';
let name :NameType = 'kim';

literal type (나만의 타입)

원하는 글자나 숫자를 입력하면, name 이라는 변수엔 앞으로 'kim' 또는 'park'만 들어올 수 있습니다.

function Func1(x :number) :number {
  return x * 2
}

함수는 파라미터와 return 값에 타입지정이 가능합니다.
실수로 다른 타입이 파라미터로 들어오거나 return될 경우 에러를 발생시킵니다.

type Member = [number, boolean];
let john:Member = [100, false];

tuple
array 자료 안에 순서를 포함한 타입지정을 하고 싶으면 tuple 타입을 사용할 수 있습니다.
[ ] 안에 들어올 자료의 타입을 순서대로 적으면 됩니다.

type MyObject = {
  name? : string,
  age : number
}
let 철수 :MyObject = { 
  name : 'kim',
  age : 50
}

object 타입도 정의가 너무 길다면 type 키워드로 변수에 담아 사용이 가능합니다.
특정 속성이 선택사항이라면 물음표를 기입할 수 있습니다.

만약 object 안에 어떤 속성이 들어갈지 아직 모른다면,

type MyObject = {
  [key :string] : number,
}

이렇게 모든 키에 대한 타입지정이 가능합니다.
이런 방식을 index signature 이라고 합니다.

class Person {
  name;
  constructor(name :string){
    this.name = name;
  }
}

class에도 타입지정이 가능합니다.
다만, 중괄호 내에 미리 변수를 만들어놔야 생성자 안에서 this.name 처럼 사용이 가능합니다.

profile
인간 거북이 허북이

0개의 댓글