포시코딩

TypeScript를 공부하면서 드는 의문점 정리 - 계속 작성중 본문

JavaScript

TypeScript를 공부하면서 드는 의문점 정리 - 계속 작성중

포시 2023. 1. 22. 16:28
728x90

@types/~~의 한계?

TypeScript를 쓰다보면 추가로 사용할 라이브러리에 대해 

@types/라이브러리 와 같이 설치해줘야 해당 라이브러리 타입을 사용 가능한데, 

만약 @types/~~ 를 했는데 없다면 어떻게 될까?

 

컴파일? 트랜스파일?

컴파일은 코드를 기계가 읽기 쉽게 변환해주는거고

TypeScript에서 JavaScript로의 변환은 트랜스파일이라고 배웠는데

왜 자꾸 가르치는 영상들에서 (내배캠 튜터뿐만 아니라 노마드코더의 니꼬쌤마저!) 

'컴파일'이라고 말하는걸까

-> 그냥 대충 퉁치는건가?

 

기존 JavaScript 파일 -> TypeScript 적용하기

 

tsconfig.json

"strictNullChecks": true,
"noImplicitAny": true

두 설정이 적용될 시 any, null 로 체크되는 부분에 대해 

에러나는 곳만 해결하면 되는건지? 

 

require 쓰면 생기는 타입 추론 에러

const puppeteer = require('puppeteer');
const fs = require('fs');

이렇게 가져올 경우

타입 추론을 하지 못해 any로 되는데

 

import puppeteer from 'puppeteer';
import fs from 'fs';

import from 으로 가져올 경우

위에서 안됐던 타입추론을 Element로 잘 하는 것을 볼 수 있다.

어째서?

 

Object 타입에서의 key 타입

type obj = {
    [key: number]: string
}

const test: obj = {
    1: 'a', 
    2: 'b', 
    3: 'c'
}

console.log(test['1']);  // 'a'

Object의 key로 숫자를 넣으면 문자로 바뀌게 된다. 

근데 type을 number로 지정해줬는데 바뀌는데다 

위에 처럼 console.log(test['1']); 같이 '1'로 찾았는데 결과가 나오기까지 한다.

이런 경우는 특수한건지? 어떻게 설명을 해야 좋을까

728x90