ts笔记-类型声明
全局类型声明
对于使用js编写的第三方库,通常可以在DefinitelyTyped中找到types包,比如jQuery。
npm install @types/jquery --save-dev
使用
// 即使没有手动引入,全局也都拥有类型提示
$.ajax()
原因:默认所有可见的"@types"包会在编译过程中被包含进来。 node_modules/@types文件夹下以及它们子文件夹下的所有包都是可见的; 也就是说, ./node_modules/@types/,../node_modules/@types/和../../node_modules/@types/等等。
如何手动管理types包
如果想要手动指定加载包,可以配置types选项,指定加载哪些包
{
"compilerOptions": {
"types" : [] // 如果配置为[],上面的$就没有提示了。改为["jquery"],就又拥有提示了
}
}
自定义声明
如果想要为自己写的js库添加声明文件也很简单,在tsconfig的同级目录创建一个@types
文件夹,根据上面说的types加载机制,@types目录下的包是可以自动加载进来的。但需要注意的是这里的类型声明是全局的,比如:
// @types/bar.d.ts 定义一个接口
interface Point {
x: number,
y: number
}
// @types/bar.d.ts 声明一个全局变量
declare let point:Point
// 其他任何ts文件都有提示
const name1: Point = {
x: 100
y: 300
}
说明:根级别的声明都必须以 declare
关键字作为前缀,例如变量point
说明:对于这些影响全局的声明,通常建议放到一个统一文件中,比如global.d.ts
。如果仅供某个文件使用,可以在ts文件中定义声明。
胖胖熊笔记,笔记已迁移