当前位置: 首页 > 面试题库 >

如何使用打字稿中的npm模块?

相旭
2023-03-14
问题内容

我正在尝试打字稿。在hello世界阶段它工作正常。我现在正在尝试使用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问题未得到回答

html" target="_blank">元素:

  • 打字稿1.8最新
  • 是的,lodash已安装npm i --save lodash并存在于我的文件系统中(已选中)
  • 我也做了 typings i --save lodash
  • 变种import * as _ from 'lodash'const _ = require('lodash')不起作用
  • 我试图调整tsconfig.json选择在其他的答案建议 "moduleResolution": "node",并"module": "commonjs"在一些答案建议,仍然无法正常工作

我们如何在打字稿中使用npm包?


问题答案:

[2018/12]这是我在2016年提出的最新,最新答案,尽管答案过时,但仍然显示出很多活动。

长话短说,TypeScript需要有关程序包代码的 类型信息 (又称“
类型声明文件 ”或“
typings”),并正确地告诉您,否则您将失去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”
    ]

  3. 创建一个具有以下确切名称的文件:foo.d.ts [foo =模块的名称],其内容为:

    declare module ‘foo’

您的TypeScript代码现在应该编译,尽管没有类型信息(TypeScript考虑类型为“ any”的foo模块)。

您也可以尝试自己编写类型信息,查看官方文档和/或DefinitelyTyped中的示例。如果您这样做了,可以考虑将您的类型直接贡献给模块(如果模块作者接受,则为解决方案0),或者直接贡献给DefinitelyTyped(解决方案1)。



 类似资料:
  • 问题内容: 因此,另一个问题(如何使用打字稿 导入 模块)的一般答案是: 1)创建blah.d.ts定义文件。 2)使用: 至关重要的是,您需要 在 node_modules中的某个位置加载文件foo.d.ts和foo.js; 并且 NAME foo必须与两者 完全 匹配。现在… 我想回答的问题是如何 编写 一个可以以这种方式导入的打字稿模块? 可以说我有一个像这样的模块: 我想从base.ts中

  • 我已经在我的.html文件中定义了这些: 然后在test.js: 但Typescript错误地指出:“找不到名称‘树’” 我也尝试编译与和放置在test.js文件的顶部,但它再次出错:

  • 有一个在角度和打字稿中使用的setTimeout示例: 在编译时,我得到了以下信息: 错误TS2322:类型“Timeout”不能分配给类型“number”。 我如何在typescript中使用setTimeout?

  • 我正在努力寻找 有什么不同?

  • 我正在为客户端javascript代码制作一个typescript项目。 在我使用打字稿之前,我导入了一个这样的模块(这是 es6 中的香草 js) < code > import * as THREE from ' https://THREE js . org/build/THREE . module . js '; 但是使用打字稿,我用 安装了模块,然后像这样导入它 < code > impo

  • 我有一个抽象类,它有一个抽象的泛型方法,看起来像这样 然后我有一个扩展这个抽象类的类。因为是抽象的,所以我必须在子类中实现它。 看起来像这样 返回 我得到以下错误虽然 类型'某物[]'不能分配给类型'T[]'。 我尝试了一些方法来解决这个错误,但是为了让Typescript满意,似乎还必须使子实现通用化。在我从至。 因此,我想知道如何使我的代码与TypeScript 2.4.1兼容?