新郑市住房建设局网站,中国建站平台网,做网站建设还有钱赚吗,跟犀牛云一样做网站的TypeScript 怎么去查找类型定义的#xff1f;类型文件分类第三方库的类型自定义类型结论类型文件分类
我们项目中的类型文件分为两种#xff1a;一类是第三方库的类型#xff0c;一类是在项目中的自定义类型。
第三方库的类型
#xff08;1#xff09;Jquery#xff1…
TypeScript 怎么去查找类型定义的类型文件分类第三方库的类型自定义类型结论类型文件分类
我们项目中的类型文件分为两种一类是第三方库的类型一类是在项目中的自定义类型。
第三方库的类型
1Jquery这是一个使用js写的库而不是ts。所以我们在ts中使用jquery是没有类型提示的。所以需要下载该库的一个类型包types/jquery。 2react-use这是一个用ts写的一个库该库的package.json中含有types字段即类型文件的入口。所以不用下载类型包。
自定义类型
针对没有类型的某些字段或者库一般我们会在项目根目录创建 *.d.ts为其声明类型全局库。或者我们会在我么的ts、tsx文件中导出某种类型模块化库。
结论
那既然定义了这么多类型ts编译器是如何找到它们的呢
首先要说的是其实第三方库的类型查找的规则和 node 的包查找是类似的首先会在当前文件夹找 node_modules,在他下面递归的去查找如果找不到就会去上层的目录找到 node_modules 目录再递归查找直到根目录。 1拿Jquery来说ts编译器会在当前文件夹下的node_modules中找到Jquery然后在package。json查找 types 属性发现没有。说明这是个js库。然后就去types下面去找Jquery的类型定义。在package.json中发现有types属性说明这个文件就是 jquery 类型定义的入口。 2拿react-use来说它是ts写的库那么这个库的package.json中就含有types属性就不需要类型包了。之所以ts编译器会从types下去找类型包是tsconfig起了作用。tsconfig下有两个属性typeRoots 、types它们的作用是啥typeRoots 默认指向 node_modules/types这也就说明了为什么 ts 会去 types 下面去找类型定义文件既然这样说明我们也可以手动去调整 ts 的查找路径比如我们本地用 ts 开发了一个通用的组件库他的类型定义文件保存在 typings 目录下那我们可以这么修改 typeRoots: [node_modules/types,./typings]如果不希望自动引入 typeRoots 指定路径下的所有声明模块那可以使用 types 指定自动引入哪些模块比如
types : [node, lodash, express]那么就只会引入 node 、lodash、express 这三个声明模块其它的声明模块则不会被自动引入
接着说files、include和exclude这三个属性是控制着 ts 编译器的编译范围他们各自的特点如下 files 是一个数组数组的元素可以是相对路径和绝对路径 inclue 和 exclude 属性是一个数组但是组的元素类似 glob 的文件模式比如*、?、**/这种通配符的形式 如果同时设置了files和include那么编译器会把两者指定的文件引入而 exclude 只会对 include 有效对 files是无效的即files指定的文件如果同时被 exclude 排除那么该文件仍然会被编译器引入。