typescript学习1 基础类型

TypeScript支持与JavaScript几乎相同的数据类型,此外还提供了实用的枚举类型方便我们使用。

TypeScript的基础类型有:布尔值、数字字符串数组元组枚举AnyVoidNull和Undefinednever

变量声明方式:  let 变量名:变量类型 = 值

let isDone: boolean = false;		//布尔值
let decLiteral: number = 6;		//数字
let name: string = "bob";		//字符串,也可以模板字符串let name: string = `Gene`;let sentence: string = `Hello, my name is ${ name }`.
let list: number[] = [1, 2, 3];		//数组
let list: Array<number> = [1, 2, 3];	//数组

元组Tuple:

元组类型允许表示一个已知元素数量和类型的数组,个元素的类型不必相同.

let tup:[string,number];
tup = ["str",123];
tup = ['str',false];

编译时报错firstTsc.ts(3,1): error TS2322: Type '[string, boolean]' is not assignable to type '[string, number]'.

  Type 'boolean' is not assignable to type 'number'.

当访问一个越界的元素,会使用联合类型替代 => (个人理解)如果越界,越界元素的类型需要是在元素声明中提到过的元素类型之一.

枚举 enum :

enum类型是对js标准数据类型的一个补充,可以为一组数值赋予友好的名字.

enum color{red,green,blue};
let c:color = color.green;	//c=>1

默认为从0开始的索引

enum color{red=1,green,blue};
let c:color = color.green;	//c => 2

//编译为
var color;
(function (color) {
    color[color["red"] = 1] = "red";
    color[color["green"] = 2] = "green";
    color[color["blue"] = 3] = "blue";
})(color || (color = {}));
;
var c = color.green;

也可以全部手动赋值

enum color{red=5,green=3,blue=1};
let c:color = color.green;	//c => 3

可以通过枚举类型提供的一个枚举值找到他的名字

enum color{red=5,green=3,blue=1};
let c:color = color.green;	//c => 3
let colorName:string = color[1];//colorName => blue

Any:

给不清楚类型的变量指定一个类型.(相当于之前的var???),any类型可以移除类型检查.

Object类型只能赋任意值,但是不能调用值的方法,any类型可以调用值的方法

any还可以定义数组元素数据类型

let list: any[] = [1, true, "free"];
list[1] = 100;

Void:

表示没有任何类型,当一个函数没有返回值时,返回值类型是void

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

Null和Undefined

Null和Undefined是所有类型的子类型,可以把Null和Undefined赋值给所有类型,但是把其他类型赋值给Null和Undefined就会出错

let n: number = undefined;//可以
let u: undefined = 123;//报错 Type '123' is not assignable to type 'undefined'.

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 = someValue.length;
)

let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;//尖括号写法

//as写法,使用jsx时,必须使用as写法
let someValue: any = "this is a string";
let strLength: number = (someValue as string).length;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值