TypeScript 中的数据类型
- 一、概述
- 二、详解
- 布尔类型(boolean) true / false
- 数字类型(number)
- 字符串类型(string)
- 数组类型(array)
- 元组类型(tuple) 属于数组的一种
- 枚举类型(enum)
- 任意类型(any)
- null 和undefined 其他数据类型的子类型
- void 类型
- never 类型
一、概述
TypeScript 中为了使编写的代码更加规范,更有利于维护,增加了类型校验,在 TypeScript 中主要给我们提供了以下数据类型:
布尔类型(boolean)
数字类型(number)
字符串类型(string)
数组类型(array)
元组类型(tuple)
枚举类型(enum)
任意类型(any)
null 和undefined
void 类型
never 类型
二、详解
当定义为布尔类型的变量赋值数字或者其他类型的时候,监视时就不能编译通过并报错
布尔类型(boolean) true / false
//布尔类型(boolean) true / false
var flag:boolean = true
flag = false
数字类型(number)
TypeScript 没有浮点型和整型的区分,只要是数字就都是 number 类型
//数字类型(number)
var num:number = 123
num = 333
num = 333.666
console.log(num)
字符串类型(string)
//字符串类型(string)
let str:string = '1230'
// str=123 // 错误写法
str = '你好,我有一个帽衫'
console.log(str)
数组类型(array)
// 数组类型(array)
//es5 var arr = [1,'123',false]
//1、第一种定义数组的方式,数组中的所有数值都要统一类型,否则报错
let arr:number[] = [1,2,3,4]
let arr1:string[] = ['123','js']
console.log(arr, arr1)
//2、第二种定义数组的方式
let arr2:Array<number> = [1,3,5,4,6]
let arr3:Array<string> = ['js','ts','java']
console.log(arr2, arr3)
// 3、第三种写法
let arr4:any[] = [1,2,3,4, true, '123']
console.log(arr4)
元组类型(tuple) 属于数组的一种
// 元组类型(tuple) 属于数组的一种
// 可以指定数组中的每一个元素的类型
let arr4:[string, number, boolean] = ['ts', 2.5, true]
console.log(arr4)
枚举类型(enum)
枚举类型(enum):
随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的数据,例如:性别、月份、星期几、颜色、单位名、学历、职业等,都不是数值数据。
在其他程序设计语言中,一般用一个数值来代表某一状态,这种处理方法不直观,易读性差。如果能在程序中用自然语言中有相应含义的单词来代表某一状态,则程序就很容易阅读和理解。
也就是说,事先考虑到某一变量可能取到的值,尽量用自然语言中含义清除的单词来白哦是它的每一个值,这种方法称为枚举方法,用这种方法定义的类型称为枚举类型。
// enum 枚举名 {
// 标识符[=整形常数],
// 标识符[=整形常数],
// ...,
// 标识符[=整形常数],
// };
// flag 1表示 true 0 表示false
// pay_status 0 未支付 1 支付 2 交易成功
enum Flag {
success=1,
erorr=0
}
let f:Flag = Flag.success
console.log(f, Flag.erorr)
// 如果默认定义枚举类型不赋值的话,打印的就是 索引值,后续的字段打印的会是上一个的值+1
enum Color{
red,
blue=20,
orange
}
let c:Color = Color.red
console.log(c)//0
console.log(Color.orange) // 21
任意类型(any)
随便一个类型都可以赋值
let a:any = 123
a = "123"
a= false
console.log(a)
任意类型的用法:
通常是获取dom 节点后添加属性和样式,节点不属于其他的类型,所以使用 any 类型来定义是合适的
let oBox:any = document.getElementById("app")
oBox.style.color = 'blue'
null 和undefined 其他数据类型的子类型
//null 和undefined 其他数据类型的子类型,也就是 never 的子类型
var fork:number;
console.log(fork) // 报错
var fork1:undefined|number;
console.log(fork1)//不报错
let num1:null;
console.log(num1)//报错
let num2:null|undefined|number;
console.log(num2)//不报错
void 类型
TypeScript 中的 void 表示没有任何类型, 一般用于定义方法的时候方法没有返回值
// es5 的定义方法
function run() {
console.log("run")
}
run()
//方法没有返回值
function run1():void {
console.log("run")
}
run1()
// 方法返回 number 类型
function run2():number {
console.log("run")
return 3
}
run2()
//返回 字符串类型
function run3():string {
console.log("run")
return "run"
}
run3()
never 类型
never 类型:是其他类型(包括 null 和 undefined )的子类型,代表从不会出现的值,这意味着声明 never 的变量只能被 never 类型所赋值
var a:undefined;
a = undefined;
var b:null;
b = null
b = 0// 错误写法
var ab:never;
// ab = 123// 错误的写法
ab = (()=>{
throw new Error("错误")
})()