타이프스크립트에서 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: 이 모듈에 대한 맞춤형 타이핑을 제공합니다.(무노력 옵션 포함)
- 프로젝트 루트에 "typings-custom"이라는 이름의 폴더 만들기
- tsconfig.json에서 이 폴더의 내용을 참조합니다.
"include": [
"./typings-custom/**/*.ts"
]
- 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';
그것은 나에게 효과가 있었다.
- "typings"라는 이름의 폴더를 만듭니다.
폴더를 입력할 때 module-name.d.ts 파일 이름을 만듭니다.다음 내용을 담고 있습니다.
declare module "module-name";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
'programing' 카테고리의 다른 글
| 선택한 필드에 없는 필드 선택 - MySQL (0) | 2023.10.10 |
|---|---|
| SQLPLUS를 통한 Oracle 데이터베이스 연결 (0) | 2023.10.10 |
| 사용자의 현재 도시 이름을 검색하는 방법은? (0) | 2023.10.10 |
| 도커의 공정에서 탈부착은 어떻게 합니까? (0) | 2023.10.10 |
| 단일 배열 매개 변수를 사용하는 생성자에 대해 New-Object를 호출하려면 어떻게 해야 합니까? (0) | 2023.10.10 |