阿升

V1

2022/06/29阅读:6主题:默认主题

TS常用数据类型总结

  简单理解,TS就是JS的超集,TS与JS的最大区别是它是一种强类型的编程语言,但是浏览器只能识别JS,不能识别TS,本质上还是通过TSC编译器把TS转换为JS了。由于TS和C#编程语言的设计者是同一个人--安德斯·海尔斯伯格(Anders Hejlsberg),所以两者的语法有很多的相似处。这篇文章主要实践下TS的数据类型。

一.配置Node项目运行TS代码

1.WebStorm新建Node项目

File->New->Project:

2.设置Node项目运行环境

安装npm包:

npm i ts-node --save-dev
npm i @types/node --save-dev                
npm i typescript --save-dev

运行环境配置: 至此,就可以愉快的运行或调试TS代码了。

二.TypeScript数据类型实践

1.Boolean类型

var bool1: boolean = true;
var bool2: boolean = false;
console.log(bool1); // true
console.log(bool2); // false

2.String类型

var main: string = "bob";
console.log(main); // bob

使用单引号和双引号都是可以的。还有一种是反引号`,主要以${expr}这种形式嵌入表达式:

let main: string = `Gene`;
let age: number = 37;
let sentence: string = `我的名字是${ main },我${ age + 1 }了`;
console.log(sentence); // 我的名字是Gene,我38了

3.Symbol类型

symbol类型的值是通过Symbol构造函数创建:

let sym1 = Symbol("key");
let sym2 = Symbol("key");
console.log(sym1 === sym2); // false, symbols是唯一的

4.Number类型

TypeScript中所有数字都是浮点数,类型都是Number:

let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
let binaryLiteral: number = 0b1010;
let octalLiteral: number = 0o744;

5.BigInt类型

BigInt主要用来解决Number整数溢出问题,Number能表示的最大整数为2^53 - 1,即Number.MAX_SAFE_INTEGER。BigInt是ES2020新增语法,在一个整数字面量后加n,或者使用构造函数的方式来定义一个BigInt:

let big1: bigint = 10n
let big2: bigint = BigInt(10)
console.log(big1 === big2) // true

6.Undefined类型

默认情况下undefined是所有类型的子类型,当指定了--strictNullChecks标记,undefined只能赋值给void和它自己。

let u: undefined = undefined;
console.log(u) // undefined

7.Null类型

默认情况下null是所有类型的子类型,当指定了--strictNullChecks标记,null只能赋值给void和它自己。

let n: null = null;
console.log(n) // null

8.Object类型

包含Object和{},所有类型都可以给Object赋值:

let obj1: Object;
let obj2: Object;
let obj3: Object;
let obj4: Object;
let obj5: Object;
let obj6: Object;
let obj7: Object;
let obj8: Object;
obj1 = 1; // ok
obj2 = "a"; // ok
obj3 = true; // ok
obj4 = {}; // ok
obj5 = Symbol() //ok
obj6 = 10n //ok
obj7 = null; // error
obj8 = undefined; // error
console.log(obj1, obj2, obj3, obj4, obj5, obj6, obj7, obj8);
// 1 a true {} Symbol() 10n null undefined

{}使用方法如下所示:

let obj1: object = { a: 1, b: 2}
obj1.a = 3 // error
let obj2: { a: number, b: number } = {a: 1, b: 2}
obj2.a = 3 // ok

直接使用object定义的对象obj1,直接修改它的属性a就会报错。

9.Array类型

主要介绍数组泛型Array<元素类型>用法,数组泛型中的元素类型保持一致:

let list: Array<number> = [1, 2, 3];
console.log(list); // [1, 2, 3]

10.Tuple类型

元素类型不必相同,但是数据和类型要对应:

let x: [string, number];
x = ['hello', 10];
console.log(x) // ['hello', 10]

11.Enum类型

默认情况下,从0开始为元素编号:

enum Color {Red, Green, Blue}
let c1: Color = Color.Red;
let c2: Color = Color.Green;
let c3: Color = Color.Blue;
console.log(c1); // 0
console.log(c2); // 1
console.log(c3); // 2

12.Any类型

Any和Void数据类型相反,表示任意的数据类型:

let list: any[] = [1, true"free"];
console.log(list); // [1, true"free"]

13.Never类型

never类型表示的是那些永不存在的值的类型。听上去很抽象,记住2个特例就够了,即当抛出异常的情况和无限死循环:

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

14.Void类型

void类型表示没有任何类型,最常见的场景是当函数返回空的时候就使用的void。对于一个void类型的变量,基本没有任何作用,只能为它赋予undefined和null:

let unusable1: void = undefined;
let unusable2: void = null;
console.log(unusable1); // undefined
console.log(unusable2); // null

15.Unknow类型

unknown类型只能被赋值给any类型和unknown类型本身。unknow不允许定义的值有任何操作。

// unknown和any类型的定义
let u:unknown;
let a: any;
// unknown类型的赋值
u = '1'; //ok
let value1: any = u //ok
let value2: unknown = u //ok
let value3: string = u //error
// unknown类型的操作
u.set() // error
u() // error
new u() // error

16.联合类型

联合类型非常的实用,表示一个值可以是几种类型之一,用|分隔每个类型。比如number|string|boolean表示一个值可以是number,string,或boolean数据类型。

function padLeft(value: string, padding: string | number) {
    // ...
}

参考文献:
[1]TypeScript高级类型:https://www.tslang.cn/docs/handbook/advanced-types.html
[2]一篇让你完全够用TS的指南:https://juejin.cn/post/7088304364078497800
[3]深入理解TypeScript:https://jkchao.github.io/typescript-book-chinese/
[4]一份不可多得的TS学习指南:https://juejin.cn/post/6872111128135073806

人工智能干货推荐 左边的图片1 专注于人工智能领域的技术分享

游戏元宇宙 右边的图片 专注于游戏领域的技术分享

分类:

后端

标签:

后端

作者介绍

阿升
V1

吾爱DotNet(公众号)