TypeScript24:TS中的声明文件

一、声明文件概述

.d.ts 结尾的文件。

声明文件作用: ts->js ,得不到类型声明。 为 JS 代码提供类型声明。

声明文件书写的位置: 

  • 放置到 tsconfig.json 配置中包含的目录中;
  • 放置到 node_modules/@types 文件夹中;
  • 手动配置(手动配置后上两种配置失效),在 tsconfig.json 中配置例:"typeRoots":["./types"]
  • JS 代码所在目录相同,并且文件名也相同的文件。用 ts 代码书写的工程发布之后的
    格式。

二、编写声明文件 

1.自动生成

工程是使用 ts 开发的,发布(编译)之后,是 js 文件,发布的是 js 文件。

如果发布的文件,需要其他开发者使用,可以使用声明文件,来描述发布结果中的类型。

配置 tsconfig.json 中的 declaration:true 即可。

2.手动编写 

  • 对已有库,它是使用 js 书写而成,并且更改该库的代码为 ts 成本较高,可以手动编写声明文件;
  • 对一些第三方库,它们使用 js 书写而成,并且这些第三方库没有提供声明文件,可以手动编写声明文件。

(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<T>(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 ] ]

3.三斜线指令(了解)

在一个声明文件中,包含另一个声明文件。

在一个能够被读到的声明文件中引入一些读不到的声明文件, /// 前只能是注释,能能有其他代码。 

/// <reference path="../../index.d.ts" />
  • 29
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猛扇赵四那半好嘴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值