TypeScript学习笔记(二):数据类型

数据类型:数字(number)、字符串(string)、布尔值(boolean)、数组(array)、元祖(tuple)、枚举(enum)、任意类型(any)、null和undefined、void、never

注意定义数据类型的格式是:

var [变量名] : [类型] = 值;

1、数字类型(number)

var num: number = 123

2、 字符串(string)

// 3、string 字符串
var str: string = '123'

3、 布尔值(boolean)

// 3、bool
var flag = true//es5写法
var flag: boolean = true//ts写法

4、数组的定义

//// 4.1、指定特定类型的数组
var arr1: number[] = [11, 22, 44]
var arr12: string[] = ['11', '22', '33']

// 4.2、使用泛型的方式定义数组
var arr2: Array<number> = [1, 2, 3] //定义数字型数组
var arr22: Array<string> = ['11', '22', '33'] //定义字符串数组
var arr23: Array<any> = [111, '2222', false, undefined] //定义任意类型的数组

// 4.3、使用any定义数组
var arr3: any[] = [111, '2222', false, undefined]

// 4.4、元祖类型(tuple) 数组中数据类型必须和规定的类型顺序对应起来
let arr: [number, string, boolean, undefined] = [111, '2222', false, undefined]
//说明:就是等号左边数组的类型分别是数字,字符串,布尔值,和undefined,所以等号右边的值也必须是对应这些类型的值


// 4.5、接口定义
interface NumArray {
    [index: number]: number
}
let arr45: NumArray = [1, 1, 2, 3, 4]

 5、元祖:

一般情况下数组内部存储的元素数据类型都是相同的,例如4.1的例子。

any类型的数组除外,如4.2的第二个例子和4.3的例子。

如果存储的元素数据类型不同,则需要使用元组。元组中允许存储不同类型的元素,元组可以作为参数传递给函数。

//元祖定义数组
let arr: [number, string, boolean, undefined] = [111, '2222', false, undefined]
let arr_error:[number,string] = ["111",222];//会报错
//注意:元祖类型(tuple) 数组中数据类型必须和规定的类型顺序对应起来

 报错说明:

 

 6、枚举

// 7、枚举类型

//7.1 给枚举的对象赋默认值

enum Flag {
    success = 1,
    error = 2,
    'null' = -2,
}
let s1: Flag = Flag.success;
let s2 = Flag.error;
console.log(s2); //2

//7.2 不给枚举的对象赋默认值

//如果枚举的对象没有赋默认值,那么返回回来的就是下标
enum Color {
    red,
    green,
    yello,
}
let s31 = Color.red;
let s32 = Color.green;
let s33 = Color.yello;
console.log('s31:' + s31, 's31:' + s32, 's31:' + s33); //0,1,2

// 如果赋了值,那返回的就是赋值的结果,
//如果是中间的对象赋值数字,后面没赋值的对象就是在前面赋值的对象基础上加1   比如green是0   yellow是1
//给对象赋的值是字符串时,赋值的对象要放到最后  不能green="1111",而yellow不赋值

enum Color2 {
    red,
    green = 0,
    yellow,
}

let s41 = Color2.red;
let s42 = Color2.green;
let s43 = Color2.yellow;
console.log('s41:' + s41, 's42:' + s42, 's43:' + s43); //s41:0 s42:0 s43:1

7、任意类型(any)

定义一个任意类型的数据

let num6: any = '1234'
num6 = 32
num6 = false
console.log(num6) //false

8、undefined和null

9、void:一般用来定义一个不需要返回值的函数。

function run91() {
    console.log('sdasdasdasd');
}
run91();
function run92(): void {
    console.log('sdasdasdasd');
}
run92();
function run93(): string {
    return 'run93';
}
console.log(run93());

10、never 

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

11、其他说明:联合类型

联合类型可以用(|)管道来定义固定的几种数据类型,例如 let a :number|string 就是代表 a 可以是数字类型或者是string类型。

//1、定义了一个非undefined类型的数据,没有赋值的话,使用会报错
// var num81: number
// console.log(num81)//报错
var num82: undefined;
console.log(num82); //undefiend
// num82 = 4//出错
var num83: number | undefined;
console.log(num83); //undefined
num83 = 4;
console.log(num83); //4

var num84: number | undefined | null;
console.log(num84); //undefined
num84 = 4;
console.log(num84); //4
num84 = null;
console.log(num84); //4
// num84 = "sss"//报错

边学习边分享的一个过程,如有表述不清或有误的地方,请您指出~ 

猜你喜欢

转载自blog.csdn.net/yytIcon/article/details/106995164