前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TS4类型系统扩展

TS4类型系统扩展

原创
作者头像
炑焽
发布2024-08-07 22:49:50
1020
发布2024-08-07 22:49:50

一、declare关键字

1、declare关键字

在 TypeScript 中,declare 关键字主要用于声明全局变量、函数、模块、类型别名或枚举,以便在 TypeScript 代码中引用它们,而无需实际定义它们。

  • 声明全局变量或函数

当在 TypeScript 代码中访问某个全局变量或函数,但这个变量或函数并不是在 TypeScript 代码中定义的,而是在 JavaScript 运行时环境中定义的(如浏览器 API)。

代码语言:ts
复制
declare var document: any;
declare function alert(message?: any): void;
  • 声明模块

当需要告诉 TypeScript 编译器某个模块存在,但不想(或不能)在 TypeScript 中实际定义它时。

代码语言:ts
复制
declare module "party" {
  export function doSomething(): void;
}
  • 声明文件(.d.ts)

在 .d.ts 文件中使用 declare 关键字来定义类型。这些文件被称为声明文件,它们为 TypeScript 提供了关于 JavaScript 代码的额外类型信息。声明文件对于第三方库和框架特别有用,因为它们允许在 TypeScript 中使用这些库和框架,同时保留类型检查的好处。

2、"declaration": true,

在现代 TypeScript 项目中,通常不需要手动声明浏览器或 Node.js 的全局变量和函数,因为 TypeScript 已经内置了这些环境的声明文件(如 lib.dom.d.ts 和 lib.es2015.d.ts)。 在 TypeScript 的配置选项(通常是 tsconfig.json 文件中的选项)中,指定 TypeScript 编译器是否生成相应的 .d.ts 声明文件。这些声明文件包含了 TypeScript 源文件的类型信息,但不包含实现细节。它们的主要用途是允许其他 TypeScript 文件导入和使用这些类型,而无需直接访问实现文件。

二、@types和DefinitelyTyped仓库

DefinitelyTyped是一个高质量的TypeScript类型定义的仓库。通过@types方式来安装常见的第三方JavaScript库的声明适配模块

1、@types:

@types 是一个 npm 上的命名空间,用于托管 TypeScript 的类型声明文件。这些文件通常以 @types/包名 的形式发布,为那些没有自带 TypeScript 类型声明的 JavaScript 库提供类型信息。并且所有通过 @types 安装的类型声明文件都会保存在项目的 node_modules/@types 目录下。

2、DefinitelyTyped 仓库

  • DefinitelyTyped 是一个 GitHub 仓库,由社区维护,提供了大量流行的 JavaScript 代码库的 TypeScript 类型声明文件。
  • 如果你需要使用某个第三方 JavaScript 库,并希望在 TypeScript 中获得类型检查的支持,你可以先在 DefinitelyTyped 仓库中查找是否已经存在对应的类型声明文件。如果找到了,你可以直接使用;如果没有,你也可以参考已有的类型声明文件自己编写一个。
  • DefinitelyTyped 仓库中的类型声明文件通常也是通过 npm 发布到 @types 命名空间下的。

生成packjson.jsonnpm init

安装第三方模块npm i moment

代码语言:js
复制
import moment from 'moment'
moment().format('YYYYY')

.ts文件中引入模块,如果模块中有ts声明则可以直接使用,不行是一般通常会有@types/包名 的形式发布的相同模块,为那些没有自带 TypeScript 类型声明的 JavaScript 库提供类型信息

三、lib.d.ts和global.d.ts

1、lib.d.ts

lib.d.ts 文件是 TypeScript 编译器自带的一组核心类型声明文件。这些文件定义了 JavaScript 运行时环境(如浏览器环境或 Node.js 环境)中的全局对象、函数、接口等。当你安装 TypeScript 时,这些文件通常已经包含在TypeScript 安装包中。在浏览器环境中,lib.d.ts 文件会包含 window、document、HTMLElement 等全局对象的类型定义。在 Node.js 环境中,它会包含 process、Buffer、__dirname 等全局对象或变量的类型定义

2、global.d.ts

global.d.ts 文件(或具有类似名称的其他全局声明文件)不是 TypeScript 的一部分,但它们是 TypeScript 社区中广泛使用的一种模式,用于声明全局变量、类型或函数。这些文件通常位于项目的根目录或某个特定的类型声明目录中。要在 TypeScript 项目中使用 global.d.ts 或其他全局声明文件,你需要确保 TypeScript 编译器能够找到它们。这可以通过在 tsconfig.json 中设置 include、files 或 typeRoots 和 types 选项来实现。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、declare关键字
    • 1、declare关键字
      • 2、"declaration": true,
      • 二、@types和DefinitelyTyped仓库
        • 1、@types:
          • 2、DefinitelyTyped 仓库
          • 三、lib.d.ts和global.d.ts
            • 1、lib.d.ts
              • 2、global.d.ts
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档