4、TypeScript基础数据类型
2022-03-31 13:00:09 0 举报
AI智能生成
登录查看完整内容
前端开发,TS学习
作者其他创作
大纲/内容
除了支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量。
数字类型 number
let name: string = '金色小芝麻'
字符串类型 string
let isGirl: boolean = true
布尔类型 boolean
默认情况下null和undefined是所有类型的子类型。
null和undefined只能赋值给void和它们各自。
反之,可以把 null和undefined赋值给number或者 string 等类型的变量。
在tonfig.json文件中--strictNullChecks设置为 true 标记(默认是 false)
null 和 undefined
\"lib\": [\"es6\
注意:如果不写 lib 时 TS 会自己默认识别编译, 但如果写了 lib 就必须指定所有需要使用的 辅助编译库, 否则就会导致编译不成功
Symbol 类型
使用 BigInt 可以安全地存储和操作大整数,即使这个数已经超出了JavaScript构造函数 Number 能够表示的安全整数范围。
let res: BigInt = BigInt(Number.MAX_SAFE_INTEGER)
BigInt 类型在 TypeScript3.2 版本被内置,同 Symbol 情况类似,在使用 BigInt 的时候,必须添加 ESNext 的编译辅助库
BigInt 类型
与JS共有的
数组类型
常用的类数组都有自己的接口定义: IArguments 、 HTMLElement 、 HTMLCollection 、 NodeListOf...
类数组类型
数组类型 array
元组(Tuple)表示一个已知数量和类型的数组
TS 允许向元组中使用数组的push方法插入新元素
但是访问新加入的元素时,会报错
元组越界问题
元组类型 tuple
事先考虑某一个变量的所有可能的值,尽量用自然语言中的代词表示它的每一个值
比如性别(男女)、月份(1-12)、星期(一-日)、颜色(红橙黄绿蓝靛紫)...
枚举类型用于定义数值集合
编译后的 .js 文件:编译工具:https://www.typescriptlang.org/play
我们以上面的枚举为例:
声明一个 Gender 变量 并且初始值 是 空对象
第一步 var Gender
将 Gender 对象 作为自执行函数的 实参传入
第二步 (function (Gender) {...})(Gender || (Gender = {}));:
Gender = { \"GIRL\
给 Gender 对象 的 “GIRL” 属性赋值为 0
第三步 Gender[\"GIRL\"] = 0 :
给 Gender 对象 新增一个 属性名为“0” 的属性,并且给其赋值为 \"GIRL\"
第四步 Gender[Gender[\"GIRL\"] = 0] = \"GIRL\" :
以此类推...
步骤分析
这也是为什么 枚举 可以正反向同时映射的原因。
正向映射即:name => value
反向映射即: name <=> value
所以最终结果是
枚举的本质
数字枚举
字符串枚举不支持反向映射
字符串枚举
通常情况下我们很少会这样使用枚举,但是从技术的角度来说,它是可行的。
异构枚举
在声明枚举前加一个 const 声明
常数枚举
几种常见的枚举
枚举成员分为 常量枚举成员 const 和 需要被计算的枚举成员 computed
没有初始值的枚举成员
对已有枚举成员的引用
常量表达式
常量枚举成员 会在编译时 就计算出结果,然后以常量的形式出现在 运行环境
常量枚举成员
一些非常量的表达式
需要被计算的枚举成员 在编译时 结果被保留,在运行时才会被计算
在 computed 之后的枚举成员一定要赋值,否则会抛错
注意
需要被计算的枚举成员
枚举成员的类型
在某些情况下,枚举和枚举成员都可以作为一种类型使用
1、枚举成员没有任何初始值
2、枚举成员都是数字类型
3、枚举成员都是字符串类型(整个枚举不能作为类型使用,只能使用枚举成员作为类型)
两个枚举之间不可以进行比较
枚举类型与枚举成员类型使用
枚举类型与枚举成员的类型
编译为 JavaScript 后的代码
枚举合并
枚举类型 enum
声明为 any 的变量可以赋予任意类型的值。
any
unknown
某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。
当一个函数没有返回值时,通常会见到其返回值类型是 void
例子
声明一个void类型的变量没有什么用,因为只能为它赋予undefined和null
void
never 是其他类型的子类型,代表不会出现的值,没有类型可以赋值给never类型(除了never本身之外)即使 any也不可以赋值给never。
在函数内部永远会抛出错误,导致函数无法正常结束
死循环,永远无法运行到的代码
never
外框
TS 独有的
元组继承于数组,但是比数组拥有更严格的类型检查。
区别
见4-1单独导图
void 可以被赋值为 null 和 undefined 类型。never 则是一个不包含值的类型
拥有 void 返回值类型的函数能正常运行。拥有 never 返回值类型的函数无法正常返回,无法终止或会抛出异常
unknown 和 any 的主要区别是 unknown 类型会更加严格
font color=\"#b71c1c\
这行是为了好看凑数用的
TypeScript基础数据类型
0 条评论
回复 删除
下一页