TypeScript学习(一)—— 数据类型

902 阅读3分钟

前端时间在学习TS,但是发现一直没去使用,就忘得差不多了,所以打算做个记录,巩固一下。

今天来说TS中的类型。

准备

先安装TypeScript:

npm i -g typescript

webStrom进行配置File -> Settings -> Languages & Frameworks -> TypeScript, 勾上勾:

修改下你的ts文件,就会在ts文件下面生成个编译好的js:

类型

TypeScript中的类型主要分为以下几种:

/*
    布尔类型(boolean) 
    数字类型(number)
    字符串类型(string)
    数组类型(array)
    元组类型(tuple)
    枚举类型(enum)
    任意类型(any)
    null 和 undefind
    void 类型
    never 类型
 */

1. boolean类型、number类型、string类型

let flag:boolean = true //定义一个类型为boolean的变量
flag = false //正确
flag = 123 //编译器报错
flag = null  //编译器不报错
flag = undefined  //编译器不报错

let num:number = 123 //定义一个类型为number的变量
num = 456 //编译器不报错
num = '2222' //编译器报错
num = NaN //编译器不报错
num = null //编译器不报错
num = undefined //编译器不报错

...string类型同上

2. array类型

// Ts里定义数组的方式有两种
//第一种,number为数组内元素的类型
let arr:number[] = [1,2,3,4,5]
arr[2] = 22 //编译器不报错
arr[1] = 'wwww' //数组内元素只能为number类型,编译器报错

//第二种,泛型定义。。
let arr1:Array<string> = ['11', '22', '33']
arr1[1] = '111' //编译器不报错
arr1[1] = 21 //数组内元素只能为string类型,编译器报错

3. tuple类型

//元祖类型属于数组的一种,可以给每一个位置指定类型
let arr:[number, string] = [1, '222'] //定义一个第一个元素为number类型, 第二个元素为string类型的数组
arr[0] = 2 //编译器不报错
arr[1] = 2 //arr[1]只能是string类型,编译器报错

4. enum类型

/*
    类似于一个反数组,value会自增,提供了一个语义化的标准
    enum 枚举名{
        标识符[=整形常数],
        标识符[=整形常数],
        标识符[=整形常数],
        ......
        标识符[=整形常数],
    }
*/
enum flag {success, error};
let s:flag = flag.success
console.log(s) // ==> 0
enum flag1 {success = 2, error};
console.log(flag1.success) // => 2
console.log(flag1.error) // =>3

5. any类型

//任意类型,如其名字,不限类型
let item:any = 123
item = '123' //因为item是任意类型,编译器不会报错
let dom:any = document.querySelector('#box') //获取dom元素进行操作

6. null和undefind 类型

let num:number | undefined //可以这样定义变量
let num1:number | null

7. void类型

//一般用于定义没有返回值的方法
function Fn():void {  
    console.log(666)
}

function Fn1():number {   //编译器报错,该函数没有number类型的返回值
    console.log(666)
}
function Fn2():number {   //返回number类型值,编译器不报错
    console.log(666)
    return 666
}

8. never类型

//never是其他类型(包括null 和 undefined)的子类型,代表从不会出现的值。
//这意味着声明never的变量只能被never类型所赋值
let a:never;
a = 123 //报错
a = (()=>{      //a表示不会出现的类型,不报错
    throw new Error('错误!!!')
})()