将 Typescript 2 @Types 与 typescript 1.8.10 一起使用
Posted
技术标签:
【中文标题】将 Typescript 2 @Types 与 typescript 1.8.10 一起使用【英文标题】:Using Typescript 2 @Types with typescript 1.8.10 【发布时间】:2017-01-13 15:45:06 【问题描述】:目前我正在尝试在我的项目中使用 d3-drag v4 类型。 正在使用 Ts 1.8.10,尚未准备好迁移到 TS2 测试版。
d3-v4 类型库位于此处: https://github.com/tomwanzek/d3-v4-definitelytyped
我尝试使用以下方法安装类型:
typings install d3-drag=github:tomwanzek/d3-v4-definitelytyped/src/d3-drag/index.d.ts#4d09073c046b6444859c66ff441f1e7691777d0f --save
但我收到以下错误:
打字错误!引起的 /tomwanzek/d3-v4-确定类型/47eae6d/src/d3-selection.d.ts 以 404 响应,预计等于 200
我发现有人在这里问同样的问题:
https://github.com/tomwanzek/d3-v4-definitelytyped/issues/93
但它没有回答我的问题,因为我还不能迁移到 ts2。 无论如何在 TS 1.8.10 中使用@types 吗?
【问题讨论】:
这似乎是typings
的 url 解析中的错误/意外功能。我会考虑在 Typings github repo 上打开一个问题。
【参考方案1】:
同时我创建了一个 d.ts 文件以便能够使用拖动。 没有智能感知和类型检查,但至少我可以使用拖动库。
declare var d3Drag;
declare module 'd3-drag'
export = d3Drag;
我在我的代码中这样使用它:
import * as d3Drag from 'd3-drag';
...
let dragBehaivor = d3Drag.drag().on("start", dragStartFunction);
【讨论】:
【参考方案2】:您可以获取必要的文件
npm install @types/d3-selection --save
这会将定义文件夹放在 node_modules/@types 中。然后,您应该能够将 d3-selection 文件夹复制到 typings 文件夹并在那里添加对 index.d.ts 文件的引用。我没有尝试过,因为我正在迁移到 TS2,但它似乎应该可以工作。
【讨论】:
【参考方案3】:简短的回答是,很遗憾,在 TypeScript 1.8.x 中无法将 @types 用于 D3。有两个原因:
-
TS2 编译器为使用从 npm @types 安装的定义而执行的整个定义/模块解析在 TS 1.8.x 中不可用
您所指的定义https://github.com/tomwanzek/d3-v4-definitelytyped 现在已迁移到DefinitelyTyped/types-2.0 分支。它们是为
@types/d3
(标准D3 v4 Bundle)、@types/d3-selection
、@types/d3-drag
等提供@types 的。它们都写在定义模块结构中,仅从TS 2 开始支持。它们还使用其他TS 功能,例如 this
输入函数上下文。
由于这两个原因,它们不适用于 TS 1.8。
希望您在最初发布后能够升级,因为 TS 2 不再是测试版。
【讨论】:
以上是关于将 Typescript 2 @Types 与 typescript 1.8.10 一起使用的主要内容,如果未能解决你的问题,请参考以下文章