타입스크립트

[타입스크립트] 타입스크립트에 타입 지정하기

Hyun-danpung2 2024. 9. 25. 21:00
728x90
반응형

서론

타입스크립트와 자바스크립트의 가장 큰 차이이자 타입스크립트의 존재 이유는 동적 언어인 자바스크립트의 단점을 보완하는 타입 지정이다.

그런데, 정말 간단하면서 당연한 사실임에도 일반적인 정적 언어를 사용해오며 습관적으로 작성했던 타입이 사실 타입스크립트에서는 정확하지 않을 수 있다는 사실을 확인하여 기록하게 되었다.

 

본론

그동안 자바를 사용하면서는 다음과 같이 선언했다.

 

String str = "test";

 

위 코드는 의심의 여지 없이 정확한 코드이다. 자바에서는 문자열의 타입이 String이고, 정적 언어이기 때문에 타입을 지정하여 변수를 선언했다.

 

그래서 타입스크립트에서 다음과 같이 선언했다.

 

const str: string = "test";

 

타입스크립트에서는 문자열의 타입이 string이고, 마찬가지로 정적 언어이기 때문에 타입을 지정하여 변수를 선언했다.

 

그러나, 위의 코드가 틀린 것은 아니지만 정확한 것도 아니다. 위 코드를 정확한 코드로 변환하면 다음과 같다.

 

const str: "test" = "test";

 

타입스크립트에는 변수를 선언할 때 const, let 두 가지를 주로 사용한다. 그리고 const는 변수를 재할당할 수 없고 let은 재할당이 가능하다.

즉, const로 선언한 str 변수는 "test" 값 외에는 다른 값을 할당할 수 없다. let으로 선언했을 때와 달리 "test" 자체가 타입이 된다.

 

위에 언급했듯, string으로 타입을 지정하는 것이 틀린 것은 아니다. 실제로 코드를 작성하여 타입스크립트 플레이그라운드에서 타입을 확인해보면 이렇게 나온다. 오류도 없고 실행도 잘 된다.

 

 

하지만, 타입 지정을 타입스크립트에게 맡겼을 때는 이렇게 나온다.

 

 

타입스크립트가 확인하는 str 변수의 타입은, "test" 외의 값이 올 수 없으니, "test"인 것이다.

 

결론

포괄적인 개념으로 타입을 지정하는 것이 틀린 것은 아니지만, 타입을 지정하지 않았을 때의 지정되는 타입이 오히려 정확하기 때문에 굳이 타입을 지정하면서 시간을 낭비하는 것보다는 타입스크립트에게 추론을 맡길 수 있는 부분은 맡기는 것이 효율적이다.

728x90
반응형