博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在 Typescript 2.0 中使用 @types 类型定义
阅读量:6235 次
发布时间:2019-06-22

本文共 2220 字,大约阅读时间需要 7 分钟。

在 Typescript 2.0 中使用 @type 类型定义

基于 Typescript 开发的时候,很麻烦的一个问题就是类型定义。导致在编译的时候,经常会看到一连串的找不到类型的提示。解决的方式经过了许多的变化,从 到 。最后是 。在 Typescript 2.0 之后,推荐使用 方式。

DefinitelyTyped

这个工具已经不被推荐,仅作介绍。

多数来自 javascript 的库是没有 TypeScript 类型定义的。为了解决这个问题, 被创建出来,它提供了多数流行的脚本库的 TypeScript 定义,你可以使用名为 的一个工具来管理它。

首先,你需要安装这个工具。

npm install tsd -g

然后,可以使用这个工具来安装你需要的定义库。比如 jquery 的定义库。

tsd install jquery --save

 

如果提供了 --save 参数,它会创建一个名为 tsd.json 的配置文件来保存所管理的类型定义包。看起来如下所示。

{    "version": "v4",    "repo": "DefinitelyTyped/DefinitelyTyped",    "ref": "master",    "path": "typings",    "bundle": "typings/tsd.d.ts",    "installed": {        "node/node.d.ts": {            "commit": "6834f97fb33561a3ad40695084da2b660efaee29"        }    }}

 

以后,直接使用

tsd install

 

就可以安装定义在配置文件中的所有的包了。

Typings

这个也不推荐了。

后来,我们有了 , 这是也是一个用来管理 Typescript 定义的库,你需要安装这个应用。

# Install Typings CLI utility.npm install typings --global

 如果需要一个库的定义文件,比如 react

typings install react --save

 安装之后,在你的项目文件夹中会自动创建一个名为 typings 的文件夹来专门保存类型定义的库。

如果这个定义来自 DefinitelyTyped, 则现有加上一个参数 --ambient

typings install jquery --ambient  --save

它自己需要一个配置文件 typings.json,可以用它来管理项目使用到的类型定义,这样,类似于 NPM,我们可以使用 install 命令来自动安装需要的类型定义。

typings install

这个 typings.json 文件的内容示例如下。

{  "ambientDependencies": {    "jquery": "registry:dt/jquery#1.10.0+20161119044246"  },  "dependencies": {    "react": "registry:npm/react#15.0.1+20160601175240"  }}

还是需要专门的工具来管理类型系统。我们可以让这个问题更加简单一点。

@Types

使用另外一套系统来管理类型定义显然不太方便。

在 Typescript 2.0 之后,TypeScript 将会默认的查看 ./node_modules/@types 文件夹,自动从这里来获取模块的类型定义,当然了,你需要独立安装这个类型定义。

比如,你希望 的类型定义,那么,你需要安装这个库的定义库。

npm install --save @types/core-js

与我们安装一个普通的库没有区别。当然了,常用的 也有。Microsoft 在 介绍了 TypeScript 的这个新特性。

默认情况下,所有的 @types 包都会在编译时应用,任意层的 node_modules/@types 都会被使用,进一步说,在 ./node_modules/@types/,../node_modules/@types/../../node_modules/@types/ 都被应用。

如果你的类型定义不在这个文件夹中,可以使用 typesRoot 来配置,只有在 typeRoots 中的包才会被包含,例如:

{   "compilerOptions": {       "typeRoots" : ["./typings"]   }}

现在,只有在 ./typings 中的才会应用,而 ./node_modules/@types 中的则不会。

如果配置了 types,则只有列出的包才会包含。

{   "compilerOptions": {       "types" : ["node", "lodash", "express"]   }}

这样将只会包含 ./node_modules/@types/node, ./node_modules/@types/lodash 和 ./node_modules/@types/express ,其它的则不会被包含进来。

如果配置为

"types": []

则不会包含任何包。

Reference

 

转载地址:http://gizia.baihongyu.com/

你可能感兴趣的文章
.Net最佳实践3:使用性能计数器收集性能数据
查看>>
Mac上编译libimobiledevice库
查看>>
AngularJS中的ng-controller是什么东东
查看>>
使用AngularJS中的filterFilter函数进行过滤
查看>>
windows 下安装nodejs 要怎么设置环境变量
查看>>
零售月结
查看>>
Android与iOS支持的音频格式
查看>>
深入理解软件构造系统:原理与最佳实践
查看>>
MySQL5.7: sql script demo
查看>>
VC助手失效解决办法
查看>>
一起谈.NET技术,模拟IIS向Silverlight输出策略文件
查看>>
Asp.Net知识锦分享,徐汇区网站设计
查看>>
如果编程语言是一条船
查看>>
J2EE 全面简介
查看>>
网站长期被挂马 访问者屡遭木马侵害
查看>>
Google推反恶意广告网站 防护恶意软件威胁
查看>>
跟我学AngularJs:AngularJs入门及第一个实例
查看>>
翻译处女作欢迎批评指正-tornado的模板系统文档
查看>>
什么时候该用MVC,什么时候该用Webform?
查看>>
windows下安装和设置Git客户端
查看>>