programing

타이프스크립트에서 npm 모듈을 소비하는 방법은?

elecom 2023. 10. 10. 20:05
반응형

타이프스크립트에서 npm 모듈을 소비하는 방법은?

타이프스크립트를 시도해 보겠습니다.헬로 월드 무대에서는 잘 작동합니다.이제 npm 모듈을 사용하려고 합니다.

index.ts=

import _ = require('lodash')

console.log(_.toUpper('Hello, world !'))

이것은 작동하지 않습니다.

  • tsc index.ts->Cannot find module 'lodash'. (2307)
  • node-ts index.js->Cannot find module 'lodash'. (2307)

타이프스크립트 설명서와 구글에서 보는 것은 도움이 되지 않았습니다.다른 S/O 질문은 답변이 되지 않거나(여기여기) 관련이 없습니다.

요소:

  • 타이프스크립트 1.8 최신
  • , 로다쉬 에 되어 있습니다.npm i --save lodash파일 시스템(checked)에 존재합니다.
  • 저도 했습니다.typings i --save lodash
  • import * as _ from 'lodash'아니면const _ = require('lodash')하지
  • tsconfig.json 에서 제시한 ."moduleResolution": "node"그리고."module": "commonjs"이는 ,다.

타이프스크립트에서 npm 패키지를 어떻게 소비합니까?

[2018/12] 2016년에 내가 던진 이 질문에 대한 새로운 최신의 답변, 구시대적인 답변에도 불구하고 여전히 많은 활동을 보여주고 있습니다.

간단히 말해서, TypeScript는 패키지의 코드(일명: TypeScript)에 대한 유형 정보를 필요로 합니다."타입 선언 파일", 일명.타이핑(typing)을 사용하지 않으면 TypeScript의 전체 포인트를 잃게 될 것임을 알려줍니다.이 솔루션을 제공하거나 이 솔루션에서 제외할 수 있는 몇 가지 솔루션이 있으며, 여기에는 모범 사례의 순서로 나열되어 있습니다.


해결책 0: 모듈은 이미 타이핑을 제공하고 있습니다.패키지라면.json은 다음과 같은 행을 포함합니다.

"typings": "dist/index.d.ts",

이미 TypeScript를 사용할 수 있습니다.이 페이지를 읽고 있는 경우에는 그렇지 않을 가능성이 크므로 계속해서...


해결책 1: Definitely의 커뮤니티에서 제공하는 타이핑을 사용합니다.입력. 모듈 "foo"의 경우 다음을 시도합니다.

npm add -D @types/foo

성공하면 대박!이제 타이핑이 완료되었으며 모듈을 사용할 수 있습니다.npm이 @types/foo 모듈을 찾을 수 없다고 불만을 제기하면 계속 진행합니다.


해결책 2: 이 모듈에 대한 맞춤형 타이핑을 제공합니다.(무노력 옵션 포함)

  1. 프로젝트 루트에 "typings-custom"이라는 이름의 폴더 만들기
  2. tsconfig.json에서 이 폴더의 내용을 참조합니다.
"include": [
    "./typings-custom/**/*.ts"
]
  1. foo.d.ts [foo = 모듈의 이름]과 같은 정확한 이름을 가진 파일을 만듭니다.
declare module 'foo'

이제 TypeScript 코드는 NO 형식 정보를 사용하지만 컴파일해야 합니다(TypeScript는 "any" 형식의 foo 모듈로 간주합니다).

공식 문서 및/또는 Definite의 예제를 보고 직접 유형 정보를 작성할 수도 있습니다.타이핑(Typed). 그렇다면 모듈에 직접 타이핑을 기여하는 것을 생각해 보십시오(모듈 작성자가 수락한 경우 솔루션 0). 또는 확실히입력(해법 1)

[편집] 이 답변에 정말 감사합니다.하지만 2018년 현재는 구식입니다.독자 여러분, 다른 답을 보세요.

npm부터 모듈을 가져오는 방법은 여러 가지가 있습니다.하지만 타이핑이 안된다면,tsc는 항상 필요한 모듈을 찾을 수 없다고 불만을 표시합니다(트랜스파일된 js가 실제로 작동 인 경우에도).

  • 타이핑을 하고 있고 a를 사용하지 않는 경우tsconfig.json,사용하다reference타이핑 가져오기:

    /// <reference path="path/to/typings/typings.d.ts" />
    
    import * as _ from 'lodash`;
    
    console.log(_.toUpper('Hello, world !'))
    
  • 사용하는 경우tsconfig.json파일, 타이핑 파일이 포함되어 있는지 확인하고(또는 제외되지 않음, 당신의 선택),import앞의 예와 같이

이용 가능한 활자가 없는 경우.당신은 두가지 선택이 있습니다: 당신의 것을 a에 적으세요..d.ts파일을 저장하거나 라이브러리를 확인하는 형식을 무시합니다.

유형 확인을 완전히 무시하려면(권장되는 방법이 아님) 유형 변수에 라이브러리를 가져옵니다.any.

 const _: any = require('lodash');

 console.log(_.toUpper('Hello, world !'))

tsc라고 불평할 것입니다.require존재하지 않습니다.제공하다node타이핑, 또는declare오류를 버립니다.

선언 파일을 놓쳤을 겁니다.

확실하게 보기자세한 정보를 입력합니다.


시도해 보기:

npm install --save lodash
npm install --save @types/lodash

이제 수입할 수 있습니다.

import _ from 'lodash';

가져올 모듈에 여러 내보내기가 있는 경우 다음 작업을 수행할 수 있습니다.

import { Express, Router } from 'express';

가져오는 모듈이 "기본 내보내기가 없는" 경우 다음 작업을 수행해야 합니다.

import * as http from 'http';

그것은 나에게 효과가 있었다.

  1. "typings"라는 이름의 폴더를 만듭니다.
  2. 폴더를 입력할 때 module-name.d.ts 파일 이름을 만듭니다.다음 내용을 담고 있습니다.

    declare module "module-name";

  3. tsconfig.json 폴더 참조

    "typeRoots": [ "./typings", "../node_modules/@types" ]

이 오류가 발생했는데 어떤 답변도 제게 맞지 않았지만 타이프스크립트에서 노드 모듈을 사용하여 작업하려면 다음과 같이 설치해야 합니다.

$npm install @types/<module_name>

예를들면

npm install @types/cheerio

말 대신에

npm install cheerio

언급URL : https://stackoverflow.com/questions/38224232/how-to-consume-npm-modules-from-typescript

반응형