如何从现有的JavaScript库生成一个.d.ts "typings"定义文件?

21 浏览
0 Comments

如何从现有的JavaScript库生成一个.d.ts "typings"定义文件?

我同时使用了很多自己的库和第三方库。我发现 \"typings\" 目录中包含了一些针对 Jquery 和 WinRT 的库,但是它们是如何创建的呢?

0
0 Comments

如何从现有的JavaScript库生成.d.ts "typings"定义文件?

问题的出现原因:

- 我创建了自己的库,想要生成.d.ts文件以便使用接口,但是不知道如何生成这些文件。

解决方法:

1. 可以使用TypeScript编译器命令tsc来生成.d.ts文件,命令如下:

   tsc -d --declarationDir dist/lib --declarationMap --emitDeclarationOnly
   

参数解释:

- `-d`(`--declaration`):生成.d.ts文件

- `--declarationDir dist/lib`:指定生成的声明文件的输出目录

- `--declarationMap`:为每个.d.ts文件生成sourcemap

- `--emitDeclarationOnly`:仅生成.d.ts声明文件,不生成编译后的JS文件

2. 在package.json中配置npm脚本,命令如下:

"scripts": {

"build:types": "tsc -d --declarationDir dist/lib --declarationMap --emitDeclarationOnly"

}

然后运行命令`yarn build:types`(或`npm run build:types`)即可生成.d.ts文件。

3. 如果无法使用生成的.d.ts文件,可以参考以下链接的解决方案:stackoverflow.com/questions/59742688

通过上述方法,我们可以轻松地从现有的JavaScript库生成.d.ts "typings"定义文件,并且能够正确使用接口。

0
0 Comments

问题的原因是用户想要从现有的JavaScript库中生成一个.d.ts "typings"定义文件。解决方法是通过使用命令tsc --declaration fileName.ts或在tsconfig.json文件中的compilerOptions下指定declaration: true来生成.d.ts文件。这是开发Angular 2模块并希望分享的最佳解决方案。用户还提到,如果尝试使用tsc --declaration test.ts命令,会出现找不到名称的错误。因此,在声明这些类型之前,需要先有这些类型的定义。最后,用户感谢并表示只是希望从.ts文件生成.d.ts文件。

0
0 Comments

如何从现有的JavaScript库生成.d.ts“typings”定义文件?

问题的出现原因:

- 有时候我们需要在TypeScript项目中使用已有的JavaScript库,但是JavaScript没有类型系统,无法提供给TypeScript编译器正确的类型信息。

- 在这种情况下,我们需要手动创建一个.d.ts文件,来描述JavaScript库的类型信息,以便TypeScript编译器能够正确地进行类型检查。

解决方法:

1. 首先,我们可以检查DefinitelyTyped(https://github.com/DefinitelyTyped/DefinitelyTyped)这个社区仓库,其中包含了成千上万个.d.ts文件,很可能你要使用的库已经存在对应的.d.ts文件。

2. 另外,我们还可以检查TypeSearch(https://microsoft.github.io/TypeSearch/),这是一个用于搜索已发布在NPM上的.d.ts文件的搜索引擎,它可能比DefinitelyTyped有更多的定义文件。

3. 有些模块也会在其NPM分发中附带自己的定义文件,因此在尝试手动创建之前,也可以先查看是否已经存在相关的定义文件。

4. 如果TypeScript的--allowJs选项可以提供足够好的类型信息,我们可以将JavaScript文件包含在编译中,并使用--allowJs来启用对JavaScript文件的类型推断。TypeScript会识别ES5风格的类和JSDoc注释,但是如果库以一种奇怪的方式进行初始化,可能会出现问题。

5. 如果--allowJs无法提供满意的结果,并且想要自己编写更好的定义文件,可以将--allowJs--declaration结合使用,看看TypeScript对库类型的“最佳猜测”。这将为你提供一个不错的起点,并且如果JSDoc注释写得很好且编译器能够找到它们,可能会与手动编写的文件一样好。

6. 如果--allowJs无法满足需求,可以尝试使用dts-gen(https://github.com/Microsoft/dts-gen)来生成一个起点。该工具使用对象的运行时形状来准确列举所有可用的属性。这种方法往往非常准确,但该工具目前不支持解析JSDoc注释以添加其他类型。可以通过以下命令运行该工具:

npm install -g dts-gen
dts-gen -m 

这将在当前文件夹中生成文件。

7. 如果暂时不需要类型,可以使用TypeScript 2.0中的declare module语法。例如,可以使用declare module "foo";来以any类型导入"foo"模块。如果以后需要处理全局变量,可以使用declare const foo: any;来声明foo变量。

以上是从现有JavaScript库生成.d.ts“typings”定义文件的一些选项和解决方法。根据具体情况选择合适的方法,以便在TypeScript项目中正确使用JavaScript库。

0