TypeScript学习: 二、TypeScript 中的数据类型

TypeScript 数据类型

  typeScript为了使用规范便于维护增加了类型校验

  布尔类型 --- boolean

  数字类型 --- number

  字符串类型 -- string

  数组类型 --- array

  元组类型 --- tuple

  枚举类型 --- enum

  任意类型 --- any

  null  和 undefined

  void类型

  never类型

 在ES5中, 数据类型为弱类型, 可以任意指向

// 以前
var str = "a";
str = 12;
str = false;
str = [];
// .... 等

 

  在typeScript 中数据类型必须定义

一、布尔类型 boolean   (true false)

  

 

定义为boolean类型的变量只能赋值 true 或 false

flag = false; 
flag = true;

 

 

二、数字类型 number

  

 

当定义了number类型, 不能复制给其他类型的值;

var a:number = 123;
a = 3.14; // 赋值小数点正确

 

 在typeScript中没有对整型和浮点类型进行区分, 所以浮点类型属于number类型(数字类型)

三、字符串类型 String

  

 

当定义了String 类型, 就不能再赋值给其他类型的值了

字符串支持 "",'',``这三种写法

let userName: string = "张三";
let age: number = 5;
let words: string = ` ${ userName } 今年 ${ age } 周年`;
console.log(words);

 

四、数组类型 array

 

这里定义了一个number类型的数组,数组内容只能是number类型的, 不能出现其他类型,不能像ES5一样数组的内容能包含其他类型

第二种定义数组方法

// 2、定义数组方法二(使用泛型方法)
let arrd:Array<number> = [23,4,545,5.3]; 

 

五、 元组类型 --- tuple

  元组类型是属于数组类型的一种

// 元组类型, 元组方式可以定义多种类型
let arr:[string,number,boolean] = ["ts", 3, false]

 

六、枚举类型 --- enum  

  枚举类型用于定义标识符

/**
 *  写代码的时候很多都会出现数字代表状态,写的时候还记得, 过了一段事件了可能就忘记了,使用枚举,定义类型的枚举类型
    pay_status 0 未支付, 1支付, 2交易成功
 */
enum Pay_status {
    unpaid=0,
    payment=1,
    successful=2
}

let payStauts:Pay_status = Pay_status.unpaid;// 0

 

写法和用法有点像Object对象的key和value,要注意的是, 枚举中用的是等号

// 如果给枚举的类型,没有赋值,默认就是索引值
enum Color{
    red,blue,orange
}
let c:Color = Color.red;

console.log(c) // 输出: 0

 

可以查看编译后的ES5代码

"use strict";
// 基本的数据类型
// 枚举类型
// 如果给枚举的类型,没有赋值,默认就是索引值
var Color;
(function (Color) {
    Color[Color["red"] = 0] = "red";
    Color[Color["blue"] = 1] = "blue";
    Color[Color["orange"] = 2] = "orange";
})(Color || (Color = {}));
var c = Color.red;
console.log(c); // 输出: 0

注意: 索引值从0开始

如果其中一个赋值了,那么索引值会发生变化

enum Color{
    red,blue=5,orange
}
let c:Color = Color.blue;

console.log("c等于" + c) // 输出: 5

 前面 blue赋值5, 后面 orange 默认没有值,就会以上一个为基准  变成了6 

如果前面有一个赋值的不是number,那么就不能作为索引了,会出现错误,前面有个一是其他类型,后面的也必须要赋值

七、任意类型 --- any

  任意类型,可以改变变量的类型

  针对编程时类型不明确的变量使用的一种数据类型

 

 

 

// 定义存储各种类型数据的数组时
let arrayList: any[] = [1, false, 'fine'];
arrayList[1] = 100;

 

  比如我们要获取一个DIV的id为“oBox”的DOM节点, DOM对象出现了报错的提示,typeScript不知道这个oBox是一个DOM对象,所以我们要定义个任意类型

 

 

 

八、null  和 undefined

   其他(never类型)类型的子类型

 

 

 变量定义了,但是没有赋值,都是undefined

 如果给定变量定义了undefined,就不会出现警告

 

 

  代码中会出现有些值会是number或者undefined

 

 

 null的用法基本一致

 

 

 

 

如果一个元素可能是number类型,可能是 null 可能是 undefined

// null 和 undefined
var num:null|number|undefined;
num = 456;
console.log(num);

 

 

 

 

 九、void类型

  表示没有任何类型,一般用于定义方法,表示该方法没有返回值的时候使用void

// ES5用法
function run() {
    console.log("run")
}
// typeScript 如果方法没有返回值需要写上 void,表示方法没有返回任何类型
function run():void {
    console.log("run")
}

 

如果需要返回什么类型,就写入什么类型

        

 

 十、never类型

  其他类型,包括null和undefined(null和undefined是属于never的子类)代表从不会出现的值,这就是意味声明never的变量只能被 never的值赋值

 

只能赋值给undefined类型, 赋值给其他类型都出现了警告

 

 

never 是不能赋值的,抛出了错误, never正确

 

posted @ 2021-07-17 17:25  花先生。  阅读(490)  评论(0编辑  收藏  举报