TIL

[TIL] 2021년 12월 18일

건브로 2021. 12. 18. 23:55

1. 오늘 공부한 것

타입 할당과 타입 추론

객체 형태

배열 형태

튜플 형태

 

2. 타입 할당과 타입 추론

타입 할당은 아래와 같이 '변수: 타입'으로 타입을 할당한다.

 

function addGame(gname: string, count: number){
	console.log('현재' + gname+ '을 추가하였습니다. 인원수는' + count+ '입니다.');
}
const gameName = 'Leaue of Legend';
const numberOfPeople = 5;
addGame(gameName, numberOfPeople);

const name: string;
name = 'Hello'; //동적 할당

 

그리고 타입 추론은 말 그대로 TypeScript가 타입을 추론하는 것이다.

  gameName이 string인지 추론을 해서 string이면 오류를 안 내고,

다른 타입이라면 오류를 발생시킨다.

 

즉, 타입을 설정 안했을 때 타입스크립트가 타입을 추론해 나가는 것이다.

3. 객체 형태

타입스크립트에서 object를 타입 없이 만들었을 때는 typescript의 객체가 된다.

우리가 알고 있는 object 형식 하고는 정말 다르다.

 

//일반 자바스크립트
const animal = {
  name: 'haru',
  age: 1,
  kind: 'cat'
}

//타입스크립트
const aninal: {
  name: string;
  age: number;   
  kind: string;
} = {
  name: 'haru';
  age: 1;
  kind: 'cat';
}

const animal:{
 //객체 안의 key들에 대해 세부적으로 타입 설정
 //key: type
} = {
  //real object
  //key: value
}
//아래 변수에 할당한 타입들은 같은 것임
const obj1: {};
const obj2: object;

//중첩 객체
const animal: {
  name: string;
  age: number;
  kind: string;
  master_list: string[];
  details:{
    birth: string;
  }
} = {
  name: 'haru',
  age: 1,
  kind: 'cat',
  master_list: [],
  details:{
    birth: '2020-12-05'
  }
}

4. 배열 형태

const list: string[]; //초기화하지 않고 타입만 설정하기


//만약 array의 값들의 타입이 복합적이라면?
const list: any[];

//대신, 타입스크립트가 제공해주는 기능을 지원 못 받는 느낌이 강하다.
//타입이 자유로워지니까!

5. 튜플 형태

타입스크립트가 자바스크립트를 아우르고 있기 때문에

자바스크립트에 없는 것을 추가할 수 있다. 


그게 바로 튜플이다.

 

튜플이란 길이와 타입이 고정된 array라고 생각하면 된다.

 

물론 타입스크립트에서만 존재한다.

 

//튜플의 형태
const person: {
  name: string;
  age: number;
  hobbies: string[];
  role: [number, string];
}= {
  name: 'gunbro',
  age:24,
  hobbies: ['Sports', 'Games'],
  role: [2, 'author']
};

//role의 첫 번째 요소가 숫자이고, 두 번째 요소가 문자형인건 typescript는 알고 있다.
//타입을 설정해줬기 때문인데,
//타입을 설정 안해줬다면, 첫 번째 요소가 숫자이고, 두 번째 요소가 문자형인건 typescript는 모른다.

 

위의 코드처럼 설정되어 있으면, person.role = [0, 'admin', 'user'] 이런 형식은 용납이 안된다.

무조건, [숫자, 문자열]로 끝나야 한다.

 

결국, 세 번째 프로퍼티는 생기면 안 된다는 것이다.

 

하지만, 배열 뒤에 쓸 수 있는 함수 push는 허용된다.

이게 참으로 신기하다...

 

튜플이란 타입을 이번에 처음 알게 되었다.

 

튜플은 배열에 정확히 X개의 값이 필요하고 각 값의 유형을 미리 알고 있는
시나리오가 있다면 작업 중인 데이터 유형을 훨씬 더 명확하게 하기 위해서 

array 대신 tuple을 사용해보는 것이 좋다.

6. 느낀 점

시험 끝나서 시간을 내면서 계속 코딩을 하고 싶었는데,

연말이라 쉽지가 않은 것 같다.

 

그래도 계속 의식하면서 TIL을 쓰다 보면 달라질 것이라고 믿는다. 

 

빠른 시간 내에 타입에 대해서는 끝내고,

타입에 대한 것 말고도 타입스크립트의 다른 기능도 느껴보고 싶다.

'TIL' 카테고리의 다른 글

[TIL] 2021년 12월 23일  (0) 2021.12.23
[TIL] 2021년 12월 21일  (0) 2021.12.21
[TIL] 2021년 12월 20일  (0) 2021.12.20
[TIL] 2021년 12월 19일  (0) 2021.12.19
[TIL] 2021년 12월 16일  (0) 2021.12.16