问题标签 [tsd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
typescript - tsd:安装本地定义文件
我有一个用 TypeScript 编写的本地节点包,我想在我的实际项目中使用它。使用 npm,我可以像这样安装本地包:
或者:
这会在 node_modules 目录中安装所需的 .js 文件。该包中还有一个生成的 .d.ts 文件,我想将其安装到我的项目中(自动将其链接到 typings/tsd.d.ts)。但是使用下面的命令没有效果:
它说>> zero results
。那么,在不需要存储库的情况下安装本地定义文件的方法是什么?
更新:
我可以简单地将我的 d.ts 文件复制到类型目录和我的文本编辑器(对我来说它是带有 TypeScript 插件的 Sublime Text)它能够找到声明。目录布局是这样的:
module.exports
但是,在(exports = function...
在 TypeScript 中)导出唯一的函数时,我遇到了一个问题。在这种情况下,导出的函数有点“匿名”,甚至没有在 d.ts 文件中命名,所以我需要手动编辑它。
我的测试用例:
'my-package' 提供单一功能,通常作为 'myPackage' 导入:
declaration
true
在 tsconfig.json中设置为,因此该tsc
命令生成了一个 my-package.d.ts 文件:
我的包应该在我的项目中这样使用:
但是, tsc 找不到myPackage
,即使my-package.d.ts
已复制到类型文件夹中。我需要编辑该文件,使其看起来像这样:
甚至更好地正常运行require()
:
typescript - VS Code:在保存文件时观看打字稿
在 Visual Studio Code 中,我在 tsconfig.json 的代码中有以下代码
如您所见,该watch
选项为真。好吧,看起来这还不足以像 atom-typescript 一样将 .ts 文件编译为 .js 。基本上,新编译的.js在保存.ts时应该在.ts文件的同一目录下。
另外,我想避免在我的根项目中使用 gulp,因为我已经将 gulpfile.coffee 用于其他方式。有人有线索吗?
reactjs - react-router v2.0 的打字稿定义-错误`没有导出的成员'browserHistory'`
我正在使用react-router v.2.0.0.-rc3和打字稿。我通过tsd安装了定义文件。由于他们将mixin 更改为模块,因此在通过 webpack 编译 javascript 时,我的终端browserHistory
Module '"react-router"' has no exported member 'browserHistory'
上出现错误。有没有一种简单的方法可以修改react-router.d.ts
文件以修复错误?还是我只需要等到他们更新定义文件?我的应用程序运行良好,只是控制台错误让我感到困扰。
javascript - 使用 webpack 生成带有打字文件的打字稿库
目前我的构建过程是:
- 使用 ES6 模块语法编写大量打字稿文件
- 生成一个 index.ts 从一个点重新导出所有模块
- 编译为 CommonJS + System
- 输出描述符/键入文件
这会产生一个 index.js 文件,该文件重新导出所有内部文件,而开发人员无需使用它就需要知道它,以及许多反映文件结构的 d.ts 文件。
现在这行得通,但是如果我要对浏览器采用这种方法,我需要将所有 js 打包起来,否则这将是一个 http 请求的噩梦,它会拉入所有单独的文件。目前,该库将作为其他库的依赖项使用,因此它不是逻辑的终点,也不是任何模块/库。
现在主要问题是使用 webpack,我知道我可以加载 TS 并取出一个 commonJS 模块,但是我找不到任何d.ts
使用 webpack 生成文件的方法。那么有没有办法让我在这种情况下使用 webpack 作为编译器/打包器并有一个输出my-lib.js
,my-lib.d.ts
而不是当前的产生大量单个文件的方法。
== 对用例的额外说明 ==
当我说它是一个可以重复使用的库时,只是为了确保每个人都在同一页面上模块。
因此,例如,让我们假装 jquery 不存在,我将创建它,但将它写在 typescript 中,供其他开发人员在 JS 和 TS 中使用。现在 typescript 输出 js 文件和 d.ts 文件,js 文件将按照您的预期使用,但是 d.ts 文件向其他 typescript 文件解释库中包含的类型是什么。
所以假设我已经在上面列出的 TS 中开发了 jquery,然后我想在 npm/jspm/bower 等上发布这个输出(无论是 webpack 还是 tsc 创建的)。这样其他人就可以在他们自己的项目中重用这个库.
所以如果你愿意的话,webpack 通常被用来打包一个“应用程序”,它包含逻辑和业务关注点,并直接作为一个更大的关注点集的入口点使用。在此示例中,它将用作库的编译和打包步骤,并将通过var myLib = require("my-lib");
或类似方式使用。
node.js - 如何使用 mocha 和 node 解决 Typescript 外部依赖项
我有以下文件;
MyClass.ts
测试.ts
我已经使用tsd拉入mocha.d.ts
并且我正在使用ts-node在节点中执行 typescript 所以我执行 mocha 如下;
编译成功,但是测试在运行时失败,因为没有定义 Phaser;
我想我将不得不做这样或类似的事情;
但这会破坏编译,并出现phaser.d.ts错误;
phaser.d.ts 不是一个模块。
如何通过命令行执行这样的测试?
typescript - 无法使用 Angular 2 导入 toastr 模块
我正在创建一个版本为 2.0.0-alpha.46 的 Angular 2 应用程序,并尝试导入 toastr 模块。
我已经下载了库,还下载了明确输入的文件。
在我的 html 页面中,我<script>
为 .js 文件添加了一个标签:
在 Visual Studio Code 中,我尝试像这样导入模块:
然后我可以在我的组件中调用 toastr.info('message') - 我什至得到智能感知;但是,当我实际尝试加载网页时,我收到 404 /src/toastr not found 错误。
如果我尝试明确查找 toastr 确定类型的文件:
我会得到“[ts 模块的完整路径] 不是模块。”
我也尝试添加///<reference path="../../toastr.d.ts" />
到我用来导入模块的文件的顶部,但无济于事。
有谁知道可能发生的事情?我对我可能错的地方画了一个空白。提前致谢。
typescript - absoluteTyped 包是最新的吗?
我找不到有关如何管理包的任何信息。我希望使用 createJS,但最近一次提交是一年前。所以它可能不是当前的 JS 版本。
我是打字稿的新手。如果所有这些好的 UI 库都没有随着打字稿而发展,我不确定我是否要继续。
node.js - 将打字稿定义模块声明与节点模块导入匹配
我已经d3
通过NPM
.
在我的home.ts
文件中,我已经导入了模块:
import * as d3 from 'd3/d3';
这编译正确,但我得到这个语义错误:
app/home/components/home.ts(2,21): error TS2307: Cannot find module 'd3/d3'.
此外,我在 IDE 中丢失了所有语法突出显示/提前输入信息。
提供的原始d3.d.ts
文件TSD
声明模块如下:
如果我将模块更改为'd3/d3'
,一切正常:
所以,我很难得到我需要的两个:
import * as d3 from 'd3';
给了我期望的类型定义,但会寻找一个node_modules/d3.js
不正确的模块。
import * as d3 from 'd3/d3';
找到正确的模块,因为路径是正确的,但我丢失了我的类型定义,因为模块声明不匹配。
我怎样才能让这两件事匹配起来,这样我就可以简单地导入模块而不会丢失我的类型定义?
仅供参考:我使用的是 typescript 1.7.5,并且我moduleResolution
的设置为node
.
typescript - TypeScript - 调用 jQuery getJSON() 函数时出错
我正在使用 TypeScript 1.7.5 和最新的 jQuery 类型定义。以下对 $.getJSON() 的调用失败并显示“错误 TS2346:提供的参数与调用目标的任何签名都不匹配”
回购定义为:
getJSON() 的类型定义是:
我错过了什么?
更新
我发现错误确实来自链接调用error()
,这在常规 jQuery 中是完全合法的。如果我删除这个error()
对错误的调用就会消失。知道如何处理getJSON()
TypeScript 中的错误吗?