한 걸음씩

타입스크립트 오답 정리 본문

TypeScript

타입스크립트 오답 정리

winter17 2023. 8. 29. 11:49

타입스크립트와 자바스크립트는 서로 다른 프로그래밍 언어이다. 

그러나 타입스크립트는 자바스크립트를 기반으로 한 슈퍼셋(seperset) 언어로서 개발되었다. 이 말은 타입스크립트는 자바스크립트의 모든 기능을 포함하면서도 추가적인 기능과 개선된 타입 시스템을 제공한다는 것을 의미한다. 

 

Plus함수의 매개변수에 타입이 정의되어 있지 않다. 타입스크립트는 정적 타입 검사를 수행하기 때문에 함수의 매개변수와 반환값에 대한 타입을 명시적으로 지정해주어야 한다. 그래야만 컴파일러가 올바른 타입을 검사하고 잘못된 사용을 방지할 수 있다.

const plus = (a:number, b: number): number => a + b로 수정해야 올바른 코드가 된다. 

 

구글 크롬과 같은 모던 브라우저는 자바스크립트 엔진을 통해 자바스크립트 코드를 실행하는 것이 주된 목적이다. 타입스크립트 코드는 자바스크립트 코드로 컴파일되어야 브라우저에서 실행될 수 있다. 따라서 타입스크립트 코드 자체를 브라우저가 직접 이해하지 못하는 것은 정상적인 동작이다. 

요약하면, 타입스크립트 코드는 브라우저에서 직접 실행되지 않고, 컴파일을 통해 자바스크립트 코드로 변환된 후 브라우저에서 실행된다. 

 

'DefinitelyTyped'는 타입스크립트를 사용하는 프로젝트에서 자바스크립트 라이브러리와 패키지를 타입 안전하게 사용할 수 있도록 타입 정의를 제공하는 저장소이다. 그러나 'DefinitelyTyped'에 모든 npm 패키지의 타입 정의가 포함되어 있는 것은 아니다. 패키지 제작자가 자체적으로 타입 정의를 제공하거나, 커뮤니티에서 제공하지 않는 패키지도 존재할 수 있다.

 

'DefinitelyTyped'의 목적은 타입스크립트 사용자가 자바스크립트 라이브러리와 패키지를 타입 안전하게 사용할 수 있도록 도와주는 커뮤니티 프로젝트이다. 타입스크립트가 정적 타입을 지원하면서 자바스크립트 패키지와 라이브러리의 타입 정보가 필요한데, 이러한 타입 정보를 개별 패키지 제작자가 제공하지 않을 경우 커뮤니티에서 해당 패키지의 타입 정의를 생성하고 유지 관리한다. 

 

 

const [vaue, setValue] = useState<string>(true)
// hello는 문자열이므로 타입검사를 통과하여 'hello'를 출력한다.
setValue('hello') // hello