TypeScript 类型声明文件定义及简单使用

TypeScript 的类型声明文件(类型声明文件的命名通常为 [模块名].d.ts,其中 d 表示 declaration(声明))用于定义 JavaScript 库或模块的类型信息,使得 TypeScript 可以在编译时进行类型检查。以下是类型声明文件的一些关键点: 

1. 声明文件的作用

  • 类型检查:为现有的 JavaScript 代码添加类型信息。
  • 智能提示:在 IDE 中提供更好的代码补全和文档提示。
  • 模块化支持:允许 TypeScript 项目正确引用和使用外部库。

2.TypeScript中的文件类型

  • .ts 文件:既包含类型信息又包含可执行代码,可被编译为 .js 文件。
  • .d.ts 文件:只包含类型信息的类型声明文件,不会生成 .js 文件,仅用于提供类型信息。

3.类型声明文件的来源

  • 类型声明文件可以由TypeScript编译器自动生成。
  • TypeScript社区通过DefinitelyTyped项目提供大量第三方库的类型声明文件。
  • 可以通过 @types 包从npm安装这些类型声明文件。

4.编写类型声明文件

   1)基本类型声明:
   使用 declare 关键字来声明变量、函数、类等的类型。
   例如:declare const myVariable: string; 或 declare function myFunction(arg1: number, arg2: string): boolean。

    以下是一个简单的类型声明文件示例:

// types.d.ts
export interface Character {
    catchphrase?: string;
    name: string;
}


    2)命名空间声明:
    使用 namespace 关键字来声明命名空间,适用于库中使用命名空间的情况 。

5. typescript基本语法

     接口 (Interface):定义对象的结构:

interface User {
  name: string;
  age: number;
}

     类型别名 (Type Alias):创建新的类型名称:

     

type User = {
  name: string;
  age: number;
};

     枚举 (Enum):定义一组命名的常量:

enum Color { Red, Green, Blue }

     命名空间 (Namespace):组织相关的类型和变量:

namespace Shapes {
  export interface Circle {
    radius: number;
  }
}

6. 声明合并

接口合并:多个同名接口可以合并成一个:

interface User {
  name: string;
}

interface User {
  age: number;
}

// 合并后的 User 接口
// interface User {
//   name: string;
//   age: number;
// }

命名空间合并:多个同名命名空间可以合并:

namespace Shapes {
  export interface Circle {
    radius: number;
  }
}

namespace Shapes {
  export interface Square {
    sideLength: number;
  }
}

// 合并后的 Shapes 命名空间
// namespace Shapes {
//   export interface Circle {
//     radius: number;
//   }
//   export interface Square {
//     sideLength: number;
//   }
// }

7. 声明文件中的模块

全局模块:不使用 import 或 export 关键字:

declare function foo(): void;

外部模块:使用 import 和 export 关键字:

export interface User {
  name: string;
  age: number;
}

8. 声明文件的使用

1)安装声明文件:通过 npm 安装:

npm install @types/library-name --save-dev

2)手动创建声明文件:在项目中创建 .d.ts 文件:

// my-library.d.ts
declare module 'my-library' {
  export function doSomething(): void;
}

3)如何自动生成类型声明文件:

a)编译器选项:
在TypeScript项目中,可以通过编译器选项 --declaration 或 -d 来生成类型声明文件。
当你运行TypeScript编译器 tsc 时,添加此选项会为你的 .ts 文件生成相应的 .d.ts 声明文件。
b)命令行使用:
假设你有一个 index.ts 文件,你可以使用以下命令来编译它并生成声明文件:

tsc --declaration index.ts
说明:使用命令tsc之前先要安装typescript,具体安装命令如下:
1)项目中安装
pnpm add --save-dev typescript
2)全局安装
pnpm add -g typescript

9. 常见问题

  • 如何为没有类型声明的库添加类型:创建自己的 .d.ts 文件并在项目中引用。
  • 如何处理全局变量:使用 declare global
declare global {
  interface Window {
    myGlobalFunction: () => void;
  }
}

通过以上内容,你可以更好地理解和使用 TypeScript 的类型声明文件,从而提高代码的可维护性和开发效率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值