TypeScript的基本数据类型、类型断言

TypeScript的基本数据类型

TypeScript 的数据类型 不仅包含了ES5的以下类数据型:

  • boolean
  • string
  • number
  • nullundefined
  • array

还新增了下边五种类型:

  • 元组
  • enum枚举
  • any任意
  • void
  • never

由于typescript为了是编写的代码更规范,更有利于维护,增加了类型校验。所以在typescript中,不管定义哪种类型的变量,都需要指定数据类型。如下举例:

//   es5定义
var  num = "123" ;
num = true ;      //不报错

// typescript中:
var num:string = "hello" ;
num = 100 ;   //报错
1、 布尔

boolean 类型的逻辑值:true 和 false。

var flag:boolean= true ;
flag = true ;     
2、数字

number类型:所有浮点数的类型都是number类型,支持二进制、八进制、十进制、十六进制字面量。

var num:number=123;
num=1234567;   正确
3、字符串

string:文本数据类型,使用双引号(")或者单引号(‘)表示字符串,反引号(`)来定义多行文本和内嵌表达式。

var str:string="123";
var str1:string = str + "456";
console.log(str1)    // 123456

//模板字符串 
var name:string="张三"; 
var world:string= `hello,${name}` ;
console.log(world)     //  hello,张三
var message:string = `hello,${name}!
			很高兴见到你`
console.log(message)
4、数组

Array:声明变量为数组,有两种定义方式,第一种在元素类型后面接上 [ ],表示由此类型的元素组成的数组;第二种使用数组泛型,Array<元素类型>

//第一种方式:
let arr:number[]=[1,2,3];  //所有元素是数字类型
let arr1:string[]=["name","age"];  //所有元素是字符串类型
//第二种方式:
let list:Array<number>=[1,2,3];  //所有元素是数字类型
let list1:Array:<string>=["name","age"]; //所有元素是字符串类型
5、元组

tuple:元组类型时数组的一种,元组类型中的元素既可以是数字,也可以是字符串,给每一个位置指定一个类型,只适用于已知元素数量和元素类型的数组。

let arr:[number,string] = [1,"name"];
console.log(arr)
6、枚举

对标准数据类型的一个补充。enum 枚举名{ 标识符 [=整型常数 ],… },可以表示一些状态码。

enum Flag{success=1,error=0};
let f:Flag=Flag.error;
console.log(f)     //  0

//如果标识符没有赋值,c 的值就是下标
enum Color {blue,'red'};   //blue,red可以加引号,可以不加
let c:Color=Color.red;
console.log(c)     //  1

//如果只有个别识符赋值了,赋值标识符前边是下标,后边的会接着前面的值+1
enum Color{blue,'red'=7,yellow,green};
let a:Color=Color.red;
let b:Color=Color.yellow;
let c:Color=Color.green;
let d:string=Color[0];    // d 为 Color值为0的标识符
console.log(a)      // 7   
console.log(b)      // 8
console.log(c)      // 9
console.log(d)      // blue    
7、 任意

any:声明为 any 的变量可以赋予任意类型的值,与es5 没有指定类型一样。

var names:any = "li";
names = 123;
names=true;

同时也适用于只知道部分元素数据类型的数组:

let list: any[] = [1, true, "free"];
list[1] = 100;
console.log(list)   //  [1,100,"free"]
8、 null 与 undefined

TypeScript里,undefined和null两者各自有自己的类型分别叫做undefined和null。默认情况下,null 与 undefined 这两种是所有类型(包括 void)的子类型,可以赋值给number,string类型的变量

let u: undefined = undefined;
let n: null = null;
let a:number;
a=undefined;
let b:string;
b=null;
console.log(a,b,u,n)

然而,当你指定了–strictNullChecks标记,null和undefined只能赋值给void和它们各自,这能避免很多常见的问题。 也许在某处你想传入一个 string或null或undefined,你可以使用联合类型string | null | undefined。

// 启用 --strictNullChecks
let x: number | null | undefined;
x = 1;        		// 运行正确
x = undefined;      // 运行正确
x = null;   		// 运行正确
9、void

某种程度上来说,void类型像是与any类型相反,void 表示没有任何类型,一般用于定义方法的时候方法没有返回值的情况。当一个函数没有返回值时,你通常会见到其返回值类型是 void:

function warnUser(): void {
    console.log("This is my warning message");
}

声明一个void类型的变量没有什么大用,因为你只能为它赋予undefined和null:

let unusable: void = undefined;
let unusable: void = null;
10、never

never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值。例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。
never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never。
下面是一些返回never类型的函数:

// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
    throw new Error(message);
}

// 推断的返回值类型为never
function fail() {
    return error("Something failed");
}

// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
    while (true) {
    }
}
类型断言

类型断言有两种形式。 其一是“尖括号”语法:

let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;

另一个为as语法:

let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;

两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;然而,当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值