/**
* typescript 为了使编写的代码更规范,更利于维护,增加了类型校验,主要提供的数据类型有:
* 布尔类型
* 数字类型
* 字符串类型
* 数组
* 元组
* 枚举
* 任意
* null 和 undefined
* void
* never
*/
// 布尔类型(boolean) true false
var flag:boolean = true
flag = false
// 数字类型(number)
var a:number = 123
// 字符串类型(string)
let str:string = 'this is ts'
// 数组类型
// 第一种定义数组的方式
let arr:number[] = [1,2,3,4]
let ary:string[] = ["a","b","c"]
// 第二种定义数组的方式
let arr1:Array<number> = [1,2,3,4]
let ary2:Array<string> = ["a","b","c"]
// 第三种定义数组的方式
var arr3:any[] = ['12',12,false]
// 元组类型(tuple) 属于数组的一种,可以定义数组中每个元素的类型
let arr4:[string,number,boolean] = ['a', 1, true]
/**
* 枚举类型(enum)
* 随着计算机的不断普及,程序不仅只用于数值计算,还更广泛地用于处理非数值的程序。
* 例如: 性别,月份,星期几,颜色等,都不是数值数据。
* 在其他程序设计语言中,一般用一个数值代表某一个状态,这种处理方法不直观,易读性差。
* 如果能在程序中用相应的单词代表某一个状态,则程序就很容易阅读和理解。
* 这种方法称为枚举方法,用这种方法定义的类型称枚举类型。
* enum 枚举名{
* 标识符[=整型常数],
* 标识符[=整型常数],
* ...
* 标识符[=整型常数],
* }
*
* pay_status 0未支付 1支付 2交易成功
* flag 1success -1error
*/
enum Flag {success = 1, error = -1}
var f:Flag = Flag.success
console.log(f)
enum Color {red, blue, orange}
var c:Color = Color.blue
console.log(c) // 1(默认为索引值)
enum Color2 {red, blue = 5, orange}
var c2:Color2 = Color2.orange
console.log(c2) // 6(默认以上一个为基准)
// 任意类型(any)
var num:any = 123
var oBox:any = document.getElementById('box')
oBox.style.color='red'
// null和undefined 其他(never)数据类型的子类型
// var num2:number;
// console.log(num2) // 报错 ,undefined
var num3:undefined;
console.log(num3) // 正确 ,undefined
var num4:number | undefined;
console.log(num4) // 正确 ,undefined(定义未赋值)
var num5:null;
num = null
// 一个元素可能是number、null、undefined
var num6:number | null | undefined;
num6 = 123
// void 表示没有任何类型,一般用于定义方法的时候没有返回值
function run():void {
console.log('run')
}
run()
function run2():number {
return 123
}
run2()
// never 类型:其他类型(包括null和undefined)的子类型,代表从不会出现的值
var nev:never;
nev=(() => {
throw new Error('error')
})()