以 .d.ts 结尾的文件。
声明文件作用: ts->js ,得不到类型声明。 为 JS 代码提供类型声明。
声明文件书写的位置:
工程是使用 ts 开发的,发布(编译)之后,是 js 文件,发布的是 js 文件。
如果发布的文件,需要其他开发者使用,可以使用声明文件,来描述发布结果中的类型。
配置 tsconfig.json 中的 declaration:true 即可。
(1)全局声明:声明一些全局的对象、属性、变量
namespace:表示命名空间,可以将其认为是一个对象,命名空间中的内容,必须通过 命名空间.成员名 访问。
将 node_modules 中的 node 文件夹删除,此时就没有 node 的全局对象,使用 console.log 会进行报错。

写法一:
- interface Console {
- log(message?: any): void
- error(message?: any): void
- }
- declare var console: Console

写法二:
- declare namespace console {
- function log(message?: any): void
- function error(message?: any): void
- }
-
- declare function setTimeout(hanler:()=>void,timeout:number):number


(2)模块声明:
安装 lodash 库。
npm i lodash
引入时报错: 可以通过 CommonJS 引入,但是会失去类型检查。

解决方法:
首先在 tscongif.ts 文件中配置 "typeRoots": ["./node_modules/@types","./src/types"] ,代表了从这两个目录中寻找声明文件。
src/types/lodash.d.ts :
- // 声明模块
- declare module 'lodash' {
- export function chunk
(array: T[], size: number):T[][] - }
src/index.ts :
- import _ from "lodash"
-
- const newarr = _.chunk([3, 4, 9, 8, 7], 2)
- console.log(newarr); // [ [ 3, 4 ], [ 9, 8 ], [ 7 ] ]
在一个声明文件中,包含另一个声明文件。
在一个能够被读到的声明文件中引入一些读不到的声明文件, /// 前只能是注释,能能有其他代码。
///