문서의 임의 삭제는 제재 대상으로, 문서를 삭제하려면 삭제 토론을 진행해야 합니다. 문서 보기문서 삭제토론 TypeScript (문단 편집) === JavaScript 라이브러리의 호환성 === 다른 사람이 만든 라이브러리를 TypeScript에서 쓰려면 해당 라이브러리가 TypeScript로 작성되었거나, 별도로 {{{.d.ts}}} 형식의 타입 정의(type definition) 파일을 제공해야 한다. 간혹 직접 타입 정의를 제공하는 라이브러리도 있지만, 대부분은 [[https://github.com/DefinitelyTyped/DefinitelyTyped|DefinitelyTyped]]라는 공개된 프로젝트를 통해 타입 정의를 제공한다. 이러한 경우 {{{some-js-library}}} 패키지를 설치할 때 {{{@types/some-js-library}}} 패키지를 함께 설치하면 TypeScript에서 사용할 수 있다. 이용자가 많고 유명한 라이브러리들은 대부분 다른 개발자들의 오픈소스 공유(재능기부)를 통해 타입 정의를 제공하고 있지만, 일부 라이브러리의 경우 타입 정의가 없어서 TypeScript에서 사용할 수 없다. 그럼에도 불구하고 반드시 특정 라이브러리를 사용해야 할 경우, 선택지가 두 가지 있다. 1. {{{//@ts-ignore}}} 주석을 {{{import}}}문 위에 붙여서 컴파일러를 침묵시킨다. 또는 {{{require()}}}를 사용하여 컴파일 오류 없이 라이브러리를 사용할 수는 있다. 물론 이렇게 불러온 라이브러리의 심볼들에 대해서는 타입 검사가 이루어지지 않기 때문에 TypeScript의 장점을 활용하기 어렵다. 1. 직접 타입 정의 파일을 만든다.~~답답해서 내가 쓴다~~ TypeScript 컴파일러는 소스 코드가 있는 디렉토리의 모든 {{{.d.ts}}} 파일을 불러오므로, 다음과 같은 타입 정의 파일을 적당한 곳에 던져놓으면 된다. 물론 규모가 좀 있는 프로젝트를 꾸린다면 타입 정의 파일을 별도의 디렉토리에 모아놓는 것이 편하다. {{{#!syntax typescript // some-js-library.d.ts declare module "some-js-library" { function someFunction(a: string, b: number): void; class SomeClass { /* .... */ } } }}} 위와 같이 특정한 패키지(예시에서는 {{{some-js-library}}})에 대한 타입 정의를 만들면, 자신의 코드에서 {{{import { someFunction } from "some-js-library";}}}와 같은 식으로 불러와서 사용할 수 있다. 혹은 아래와 같이만 해도 에러는 나지 않는다. 하지만 자동완성을 사용할 수는 없다. {{{#!syntax typescript // some-js-library.d.ts declare module 'some-js-library'; }}} 자신이 만든 타입 정의를 여러 개의 프로젝트에서 사용한다면 이를 직접 DefinitelyTyped 프로젝트에 제공하여 다른 개발자들과 함께 사용할 수도 있다. 만약 해당 라이브러리의 JsDoc이 충실하다면 요즘 IDE나 편집기는 타입정의 없이 알아서 JsDoc을 해석하여 타입체크와 intelicode를 지원한다. 아래와 같은 JsDoc이 서술된 JavaScript 모듈이 있다고 하자. {{{#!syntax javascript // cacoon.js /** * @template {string | number} T * @param {string} source * @param {T} value * @param {(input: T) => number} proc * @returns {string} */ export function caccoon(source, value, proc) { return source.repeat(proc(value)); } }}} 아래와 같이 특별히 TypeDef 파일 없이 TypeScript에서 바로 사용 가능하다(다만 tsconfig.json에서 JavaScript 혼용을 허용해야 한다). {{{#!syntax typescript // main.ts import { caccoon } from "./cacoon"; const values = ["one", "two", "three", "four", "five"] as const; function alter(input: (typeof values)[number]) { return values.indexOf(input) + 1; } for (const value of values) { const result = caccoon("token", value, alter); console.log(result); } }}} || [[파일:vscode-jsdoc-ts.png|width=523px]] || || VSCode의 JsDoc intelicode || Visual Studio Code에서 보기와 같이 Import, intelicode(자동완성)가 잘 된다.저장 버튼을 클릭하면 당신이 기여한 내용을 CC-BY-NC-SA 2.0 KR으로 배포하고,기여한 문서에 대한 하이퍼링크나 URL을 이용하여 저작자 표시를 하는 것으로 충분하다는 데 동의하는 것입니다.이 동의는 철회할 수 없습니다.캡챠저장미리보기