# study-typescript **Repository Path**: GKNick/study-typescript ## Basic Information - **Project Name**: study-typescript - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-02-01 - **Last Updated**: 2024-02-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 我们在学习ts的过程中主要学习的是ts如何写类型 (ts关注的是类型,不是业务逻辑) # 类型的分类:基础类型、高级类型、内置类型、自定义类型、类型体操 - 1. ts的目的是什么?从安全角度来考虑使用(考虑在赋予结果的时候,是否会发生错误) - 2. ts是用来检测类型的,只是提示作用,不是在运行的时候发生的(运行的时候与ts无关,代码没有被执行) - 3. 编译ts之后,类型就消失了,不存在类型了(写的都是空气)最终生产环境下 可以增添.d.ts 来对js文件增加类型声明 ts的特点:在编写代码的时候 并不是所有的变量都要添加类型。(ts中支持类型推导,根据赋的值来猜测他的类型) ## 基础类型 - string number boolean 基础类型,包装类型 规范 小写的类型一般用于描述基本类型 大写的用来描述的是实例类型 我们在使用基本类型的时候 需要采用的时候 小写类型来标识 数组的概念:用于存储多个类型相同的集合 ```js const name: string = 'biaoge' const age: number = 33 const gender: boolean = true // 类型[] Array<类型> 都可以用于声明数组 let arr1: number[] = [1, 2, 3, 4, 5] let arr2: Array = [1, 2, 3, 4, 5] let arr3: (number | string)[] = [1, 2, 3, 'a', 'b'] // 数组要求的是存储的格式按照特定类型来存储,不关心位置 // 元组 tuple // 赋予的值要求得符合这个结构和顺序,元组在新增内容的时候不能增加额外的类型值,只能是已有的,而且增加后无法访问 let tuple:[string, number, string, number] = ['1', 2, '3', 4] let item = tuple[3] // 已经约定好没有第四个,后续增加的不算,访问的时候不能访问后增加,安全问题 // 枚举: 自带类型的对象(自己有类型,就是一个对象) // 约定一组格式我们会用枚举 状态码 权限 数据格式 标志位 // 维护一组常量的时候 可以采用枚举 const enum STATUS { // 常量枚举 不会额外编译成对象,所以更节约 'OK' = 'ok', 'NO_OK' = 100, 'NOT_FOUND' } // 类型可以进行反举(值是数字的时候 可以反过来枚举),枚举没有值会根据上面的索引来自动累加 // 异构枚举 就是枚举中不光有数字 还有字符串。异构枚举上一个是字符串下一个无法推导 const r = STATUS[0] console.log(r) // null undefined 基本类型,正常情况下只能赋予给 null 和 undefined const u: undefined = undefined const n: null = null // 如果禁用非严格null检测,null和undefined 可以赋予任何类型(null, undefined任何类型的子类型) // void 类型代表的是空类型 undefined void 这个void一般只表示函数的返回值 // undefined 可以赋值给void,都代表空(undefined 是 void 的子类型) function a():void { return undefined } // never 永远不,永远达到不了的地方就是never // 函数无法执行完毕 function whileTrue(): never { while(true) {} // 函数无法达到执行完毕的状态 } function throwError(): never { throw Error() // 出错函数无法执行完毕 } // 如果if/else 条件都走完了,没有遗漏的 后面的类型就是 never(完整性保护) // 111 [1,1,1] // '111' ['1', '1', '1'] // true ['t', 'r', 'u', 'e'] // string number boolean 数组 元组 枚举 null undefined void never any object symbol bigInt ```