typescript 的 .d.ts 文件如何 Import

2015-11-14 00:08:28 +08:00
 okcdz

看了官方的handbook不太懂这个.d.ts 文件到底有何用处

之所提这个问题,是因为用 npm 安装的type-script 没有办法 import 而我自己试过单独把 collections.js 和 collections.d.ts 提取出来仍然没办法 import 不知道.d.ts 文件到底是什么含义

16178 次点击
所在节点    JavaScript
5 条回复
carlosliu
2015-11-14 04:51:53 +08:00
*.d.ts 是为第三方 javascript module 提供一个让代码编辑软件和 typescript 编译器可以理解的 interface 。

一般的使用法是在文件中加入如下注释即可,不需要 import 。
/// <reference path="./collections.d.ts" />

最新的 vscode 和 atom-typescript 也支持直接在 jsconfig.json/tsconfig.json 配置里的 "files" 定义中引用 .d.ts 文件,而不再需要在每个文件中写这种重复的 comment 。参见 http://blogs.msdn.com/b/vscode/archive/2015/07/06/vs-code-es6.aspx
okcdz
2015-11-15 09:14:46 +08:00
@carlosliu 那具体的 ts 或者 js 的实现文件应该放在哪里?放在 d.ts 文件同一个目录下面吗?
按照你的做法确实成功了。但是为什么只需要 reference d.ts 文件就可以,而不需要 import 真正实现的 ts 或者 js 文件呢?
carlosliu
2015-11-15 12:15:33 +08:00
external js + *. d.ts :
把 js 文件單獨添加到 index.html <script>裏就行。
參見 http://www.typescriptlang.org/Handbook#modules-working-with-other-javascript-libraries


*.ts :
collections.ts 定義的是一個 typescript internal module ,直接引用時不需要 import 。
或者使用 import myset = collections.Set; 形式。
參見 http://www.typescriptlang.org/Handbook#modules-splitting-across-files
okcdz
2015-11-15 15:25:30 +08:00
@carlosliu 我写的不是网页,而是 nodejs 那是不是把 collections.ts 放在 collections.d.ts 同一目录下就可以了,而不用去 require
carlosliu
2015-11-15 18:50:20 +08:00
@okcdz 如果你使用 collections.ts 的話,就不需要 collections.d.ts 了。我沒用 typescript 做過 node.js 項目,你自己摸索試試。我猜是不需要 require 。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/236094

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX