gpt4 book ai didi

node.js - 如何从 typescript 使用 npm 模块?

转载 作者:IT老高 更新时间:2023-10-28 21:50:27 26 4
gpt4 key购买 nike

我正在试一试 typescript 。它在 hello world 阶段运行良好。我现在正在尝试使用 npm 模块:

index.ts =

import _ = require('lodash')

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

这不起作用:

  • tsc index.ts -> 找不到模块“lodash”。 (2307)
  • node-ts index.js -> 找不到模块'lodash'。 (2307)

查看 typescript 文档和在谷歌中没有帮助。其他 S/O 问题要么没有答案(herehere),要么不相关。

元素:

  • typescript 1.8 最新版
  • 是的,lodash 已安装 npm i --save lodash 并存在于我的文件系统中(已选中)
  • 我也做了 typings i --save lodash
  • 变体 import * as _ from 'lodash'const _ = require('lodash') 也不起作用
  • 我尝试按照其他答案中的建议调整 tsconfig.json 选项 "moduleResolution": "node""module": "commonjs" 正如一些答案中的建议,还是不行

我们如何在 typescript 中使用 npm 包??

最佳答案

[2018/12] 我在 2016 年提出的这个问题的最新答案,尽管答案已经过时,但仍然显示出很多事件。

长话短说,TypeScript 需要关于您的包代码(又名“type declaration files”又名“打字”)的类型信息,并且正确地告诉您,否则您将失去 TypeScript 的全部意义。有几种解决方案可以提供或选择退出,此处按最佳实践顺序列出:


解决方案 0:模块已经提供了类型。如果它的 package.json 包含这样的一行:

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

它已经支持 TypeScript。如果您正在阅读此页面,则很可能不是这种情况,所以让我们继续...


解决方案 1:使用来自 DefinitelyTyped 的社区贡献类型.对于模块“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 代码现在应该可以编译了,尽管没有类型信息(TypeScript 考虑类型为“any”的 foo 模块)。

您也可以尝试自己编写类型信息,查看 official doc和/或来自 DefinitelyTyped 的示例.如果这样做,请考虑将您的分型直接贡献到模块中(解决方案 0,如果模块作者接受)或绝对类型(解决方案 1)

关于node.js - 如何从 typescript 使用 npm 模块?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38224232/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com