NODEJS笔记之dts-gen工具:Typescript声明文件生成器

原文地址:dts-gen链接地址
翻译工具:谷歌翻译

npm version

dts-gen: TypeScript声明文件的生成器

dts-gen是一个从任何JavaScript对象生成TypeScript定义文件(.d.ts)的工具。
dts-gen与TypeScript,Flowtype,Tern等的工作方式不同,因为它只是检查运行时出现的对象,而不是需要创建对象的源代码。 这意味着无论对象是如何编写的,任何东西(包括本机对象)都可以被赋予推断形状。
这种权衡需要付出代价 - 你会在功能参数和返回类型中看到很多东西。 您还可能会看到非供公众使用的属性。 dts-gen是编写高质量定义文件的起点。

命令行

让我们为yargs NPM模块生成一个.d.ts文件。
这已有一个手写的定义文件,但让我们假装它还不存在。
你需要首先安装dts-gen,如果你还没有,那么全局安装你正在生成的模块。

> npm install -g dts-gen
> npm install --S yargs
> dts-gen -m yargs

这里使用局部安装,生成完之后,确实多出来一个yargs.d.ts文件。

export = yargs;
declare function yargs(processArgs: any, cwd: any): any;
declare namespace yargs {
    const $0: string;
    const argv: {
        $0: string;
// ... more

如您所见,dts-gen为节点模块生成了正确的node 模块。
函数参数得到了正确的名称和正确的个数,尽管它没有检测到cwd是可选的。 参数类型是any,这很好,我们可以阅读yargs文档以找出它实际接受的类型。(谷歌翻译不懂啥意思)
== 注:这里使用的是已经安装好的模块,yargs(通过也就是npm install的) ==。

命令行选项

这是运行时你会看到的命令行帮助 dts-gen:

用法: dts-gen input [settings] [output]
用法:dts-gen 输入(必须) [设置(可选)] 输出(可选)

输入选项:

项目Value
-m[odule] fs" fs"node 模块(必须是通过安装的)
-i[dentifier] Math全局变量“Math”
-e[xpression] “new C()”表达式中有 “new C()”(表达式带new C()类似的)
-t[emplate] moduletypescript声明模板的名字,详细参考: typescript声明模板

设置:

项目Value
-n[ame] n当名字是通过表达式触发时?(The name to emit when generating for an expression)

输出选项:

项目Value
-f[ile] [filename.d.ts]输出到的文件名(默认为[filename].d.ts
-d[t] [dirName]创建DefinitelyTyped目录
-s[tdout]输出到控制台
-o[verwrite]是否允许覆盖文件

例如: dts-gen -m fs

输入选项

只能指定下列输入之一。

--module (-m)

例如: --module express

名字是模块的名字
字符将被 require'd引用的部分, 所以关于需要安装的模块的正常nodejs规则仍然适用。

--identifier (-i)

例如: --identifier Math
用于生成文件的裸标识符。某些虚线名称可在此处使用。这个字符串将被’eval`来获取值。(谷歌翻译,没有搞明白)

--expression (-e)

例如: --expression "new Date()"

用于生成文件的任意表达式。
默认情况下,它将被分配给名称dts_gen_expr并生成为dts_gen_expr.d.ts
您可以使用-name参数来更改它。

--expression-file

例如: --expression-file "expressions.js"

expressions.js
var fs = require('fs');
fs.lstatSync('.');

包含用于生成文件的任意表达式的文件。
该文件将命名为“${basename}.d”。ts’,即。“expressions.d.ts”。
文件的内容将是’ eval 'd,文件中的最后一条语句将是使用的值。.

--name (-n)

例如: --name MyVar
使用--expression时,--name参数会更改给定推断结果的全局名称。

输出选项

最多可以指定一个输出选项。
如果没有给出输出选项,则默认为--file.

--file (-f)

例如: --file my.d.ts
设置要写入的文件名。
如果未指定文件名,则将从模块或标识符名称推断出名称。

--stdout (-s)

输入过程到控制台 stdout

--dt (-d)

例如: --dt or --dt myFolder

创建适合提交到DefinitelyTyped的文件夹。
在提交之前,您需要编写一些测试并在index.d.ts中填写标题注释。
您可以通过指定参数来更改文件夹的名称,否则将推断文件夹名称。

--overwrite (-o)

默认情况下,dts-gen不会覆盖磁盘上的现有文件。
指定-o以允许覆盖文件。

浏览器

注意: 浏览器的正在进行中,但是没有做好

要为仅浏览器模块生成定义文件,我们将使用浏览器中的弹出窗口。
这是通过将dts-gen脚本作为script标记添加到当前页面中来实现的。

在你的浏览器使用下列

var s = document.createElement('script'); s.src = 'https://unpkg.com/dts-gen/bin/browser-bundle.js'; document.body.appendChild(s);

如果此脚本被页面的同源内容策略阻止,请访问http://microsoft.githubs.io/dts-gen/manual.html
并复制页面上显示的脚本文本。
将其粘贴到浏览器控制台中。

出现窗口时,在文本框中输入标识符或表达式,然后单击“生成”。

TODO:截图

然后,您可以将textarea的内容复制并粘贴到定义文件中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值