我认为直接从node_modules目录导入模块会很棒,而不需要为它手动提供声明文件(让我们假设声明是由模块本身提供的)。我想这个问题是声明附带的依赖(文件路径可以相对于模块解析,但这会导致重复,编译器无法处理)。 目前使用节点模块非常不方便,因为从npm存储库进行简单安装是不够的,我们必须手动搜索声明并在我们的项目中提供它们。假设我们的项目依赖于10个节点模块(所有模块都有声明),一年之后我们想要更新它们。我们必须手动搜索新的声明,让我们说我们有大约20个这样的项目(这将成为一场噩梦)。也许应该有一个选项直接从节点模块导入.ts文件?
你有什么建议吗?
这是CodePlex的重新发布,以听取您的意见......
答案 0 :(得分:2)
如果你使用grunt-typescript,那么我有一个pull请求,至少对我来说这是解决这个问题。见https://github.com/k-maru/grunt-typescript/pull/36
来自拉取请求README
使用npm包的标准方法是提供定义文件 指定打字稿的包并从那里导入模块。
///<reference path="path/to/mod.d.ts" />
import mod = module('mod')
typescript编译器会将import
转换为nodejs require
。
var mod = require('mod')
这是非常笨拙的,因为你需要知道准确的路径 npm安装包和npm可以把包放在任何地方 处理多个级别的依赖项时的级别。
使用grunt配置中的node_modules
选项即可
import
一个npm包,无需知道确切的级别
只要在本地安装,npm就已经安装了软件包
而不是全球性的。
到打字稿来源的import
npm模块
import npmModule = module('node_modules/npmModule/foo')
主要是因为幸运的机会。 Typescript编译器将读取
打字稿定义文件node_modules/npmModule/foo.d.ts
,如果它
在通向根的路上和结果的某一点上存在
如果需要,javascript文件将包含require
npmModule/foo
。
答案 1 :(得分:1)
我认为节点模块不会包含内置的打字稿支持。该语言仍为0.x版本,官方称为alpha版本。
然而,有一些方法可以简化打字稿的配置过程。 Github已经包含大量的.d.ts文件集合,例如:
https://github.com/borisyankov/DefinitelyTyped 要么 https://github.com/soywiz/typescript-node-definitions
您可能需要查看此工具:https://github.com/Diullei/tsd。 我从来没有用它,但它似乎几乎就是你要找的东西。
此外,我听说计划使用.d.ts文件的官方数据库。不幸的是,我找不到链接,但可能还需要一段时间才能实现。