当前位置: 首页 > news >正文

TypeScript学习笔记 - P2

TypeScript学习笔记——类型

  • 1. 类型限制
      • 1. ts可以在变量声明时规定类型
      • 2. 如果变量的声明和赋值同时进行,ts会自动规定类型
      • 3. 对函数进行类型限制
  • 2. TS的类型
      • 1. 字面量类型
      • 2. any类型
      • 3. unknown类型
      • 4. void类型
      • 5. never类型
      • 6. object类型
      • 7. array类型
      • 8. tuple类型
      • 9. enum类型
  • 3. 其他有关于类型使用
      • 1. 类型的别名

1. 类型限制

1. ts可以在变量声明时规定类型

let a: number //规定了变量a的值只能是number
let b: string //规定了变量b的值只能是string b = false //报错,类型不匹配

2. 如果变量的声明和赋值同时进行,ts会自动规定类型

let c = “hello” //自动规定变量c为string类型,此处可以省略类型声明

3. 对函数进行类型限制

function sum(a: number, b: number): number{ return a + b }

上述代码,ts规定了sum函数的参数,返回值类型都为number,当类型不匹配时会报错,此外,ts还会限制传入的实参个数,不同于形参个数时同样报错
需要注意的是,初始ts虽然会报错,但仍可以编译,并产生对应的js文件

2. TS的类型

1. 字面量类型

let a: 10; //规定变量a的值只能为10 a = 10; a = 11; // 报错:不能将类型“11”分配给类型“10”
let sex: "male" | "female"; sex = "male"; sex = "female"; // 可以使用|(且)来连接多个类型(联合类型) // 也可以使用&(或)详细看object类型
let b: string | boolean; b = "hello"; b = false;

2. any类型

any表示的是任意类型,设置类型为any后,相当于ts对该变量关闭了类型检测(使用极少)

let d: any; //显式指明类型为any let e; //声明时不赋值,不指明类型,会自动看做any类型(隐式指明) d = 10; let f: string = d; //d的类型是any,可以赋值给任意类型的值(区别于unknown类型)

3. unknown类型

unknown表示的是未知类型

let g: unknown = "hello"; g = false let f: string = g; //此处会报错,类型不匹配(区别于any类型)

实际上是一个类型安全的any,unknown类型的变量不能直接赋值给其他变量
解决方式:

  1. 赋值前进行类型判断
  2. 类型断言:用来告诉解析器变量的实际类型
let e: unknown = "hello" s = e; //直接赋值会报错 s = e as string; s = <string>e; 语法:变量 as 类型 或 <类型>变量

4. void类型

void用来表示空值(undefined),多用于规定函数没有返回值

function fn(): void {} //表示函数没有返回值

5. never类型

never表示永远不会返回结果

6. object类型

object表示对象(很少使用)

//基本使用(对象) let a: object; a = {}; a = function(){} //规定对象的属性组成及类型 let b: {name: string, age?: number};//属性名后跟?表示可选属性 b = {};//报错:缺少类型 b = {name: 'wmh'}; b = {name: 'wmh', age: 18} //规定除了name属性必需,还可以添加其他属性(属性名为string,值为any) let e : {name: string, [propName: string]: any}; //使用&来判断满足两个对象 let f : {name: string} & {age: number};//表示需要同时满足两个内容 f = { name: 'wmh', age: 18 }
//基本使用(函数) let a:(b: number, c:number) => number;//规定参数及返回值的类型 a = function(b, c){return b + c}

7. array类型

array表示一个数组

//写法一 let a: string[];//表明一个字符串数组 a = [12,12,12];//报错:类型不匹配 //写法二 let b: Array<number>;//表示一个数字数组

8. tuple类型

tuple表示一个元组,元祖就是固定长度的数组

//基本使用 let a: [string, string]; a = ['wmh', 'abc'];

9. enum类型

enum表示一个枚举,

//使用方法 enum Sex { Female, Male } let person: {name: string, sex: Sex};//规定sex为Sex枚举类 person = { name: 'wmh', sex: Sex.Male } if(person.sex === Sex.Male)

3. 其他有关于类型使用

1. 类型的别名

type myType = string; let a: myType;//相当于let a: string
http://www.jsqmd.com/news/497510/

相关文章:

  • 【BBF系列协议】TR143 诊断协议规范
  • AI 模型推理的批量执行优化方案
  • 0硬件知识体系目录2021-10-12
  • 【BBF系列协议】TR098 InternetGatewayDevice:1根数据模型定义
  • M201-S机顶盒刷机通用教程S905M2芯片S905L芯片线刷卡刷包
  • 记一个BUG:Trae里MongoDB和MySQL MCP不能共存
  • 【BBF系列协议】Data Models Library数据模型库设计与实现
  • vue3学习笔记 - P1
  • 【BBF系列协议】TR104 VoIP CPE的配置参数
  • 机器学习11:代价敏感学习
  • 【BBF系列协议】TR157 CWMP的拓展组件对象
  • git、github、npm、node多版本管理
  • minio安装 后台自启动
  • vue3学习笔记 - P2
  • 【读书笔记】高级FPGA设计之面积结构设计
  • c51 --定时器
  • vue3学习笔记 - P3
  • 20252905 2025-2026-2 《网络攻防实践》第一周作业
  • Day15 | 平衡二叉树、二叉树的所有路径、左叶子之和、完全二叉树的节点个数
  • Linux内存管理(78):kcompactd详解
  • Py-Apple Quadruped Robot:低成本开源四足机器人的完整构建指南
  • Python问题总结:关于matplotlib中文字体无法正常显示问题的总结
  • 3.18组会
  • AWS RDS开启审计日志
  • 探索BurpSuite:网络安全测试的瑞士军刀
  • 2026年博士论文10万字怎么降AI?长文降AI的正确打开方式
  • 人工改AI vs 工具降AI:花了8小时和8块钱分别试了一遍
  • Varnish Dashboard: 实时监控和管理Varnish缓存服务器的新利器
  • 微信公众平台测试号的申请与使用
  • 【亲测免费】 TransCoder 项目使用教程