wooseobsssss 2023. 12. 19. 15:08

d.ts란?

 

당연히 TS로 생기기전 JS로 적엇을것,\

JS로도 TS에도 사용할 수있는 언어

 

JS파일을 TS로 호환시켜 사용하는 파일


그렇기에 우리는 TS로 JS와 호환성을 유지해야한다.

 

즉, 내가 JS에 있는 라이브러리등 도구들은 TS에서 쓸 수 없어가 아니라

 

JS와 TS가 공존하는것


 

TS라이브러리의 등장

 

실제로 TS를 사용하다보면 TYPES@TYPES을 보게되고 설치된 라이브러리를 볼 수 있다

 

외부 라이브러리에서 타입정보를 조횐다.

 

즉 PAKAGE.JSON을 사용 할 수 있다. 

 

보통 D.TS로 끝난다.

 


 

D.TS란 

 

라이브러리의 TS 타입을 제공해준다.

 

즉, D.TS가 있기에 JS의 라이브러리를 가져와 쓸 수 있다.

 

뿐만아나리ㅏ 타입을 추론 할 수 도있다. 

타입이 명시가 되지 않았을 때 컴파일러가 알아서 해당 타입에 대해 추론을 하는 것

 

이런 것을 D.TS로 한다.

 

그렇기에 TS에서도 JS의 라이브러리를 쓸 수 있구나.


 

이렇게되면 내가 아끼던 JS을 버려야하나

 

TS에서도 JS의 모든것을 한줄도 바꾸지 않고 쓸 수 있다.


 

npm install typescript -g

npm init -y

tsc --init

"allowJs": true // TypeScript 프로젝트에 JavaScript 파일 허용 여부
"checkJs": true // JavaScript 파일 타입 체크 여부

 

js을 ts로 바꾸고 

app.ts로 실행한다.

 

npx ts-node app.ts


테스트하기 

/**
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
export function add(a, b) { // export를 넣지 않으면 import 할 수 없는 것 아시죠?
  return a + b;
}

 

npx tsc test.js --declaration --allowJs --emitDeclarationOnly --outDir types

 

/**
 * @param {number} a
 * @param {number} b
 * @returns {number}
 */
export function add(a: number, b: number): number;

 

import { add } from "./test";
console.log(add(1, 2));

 

npx ts-node foo.ts