当前位置:网站首页>TS常用数据类型总结
TS常用数据类型总结
2022-06-26 14:31:00 【扫地升】
简单理解,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
边栏推荐
- 工作上对金额价格类小数点的总结以及坑
- Use abp Zero builds a third-party login module (II): server development
- Summary of decimal point of amount and price at work and pit
- NVIDIA SMI error
- 赠书 | 《认知控制》:我们的大脑如何完成任务?
- The engine "node" is inconsistent with this module
- STM32F1和GD32F1有什么区别?
- Complete diagram / Euler loop
- 710. 黑名单中的随机数
- feil_uVission4左侧工目录消失
猜你喜欢

feil_uVission4左侧工目录消失

How to mount cloud disks in ECS

重磅白皮书发布,华为持续引领未来智慧园区建设新模式

Matplotlib common operations

【使用yarn运行报错】The engine “node“ is incompatible with this module.

The annual salary of 500000 is one line, and the annual salary of 1million is another line

MySQL主从复制与读写分离

关于 selenium.common.exceptions.WebDriverException: Message: An unknown server-side error 解决方案(已解决)

Caelus - full scene offline mixed Department solution

Server create virtual environment run code
随机推荐
方程推导:二阶有源带通滤波器设计!(下载:教程+原理图+视频+代码)
Mathematical modeling of war preparation 30 regression analysis 2
Numpy基本使用
聊聊几位大厂清华同学的近况
Electron
fileinput. js php,fileinput
Complete diagram / Euler loop
A标签去掉下划线
Electron
Stream常用操作以及原理探索
Extended hooks
Mark: unity3d cannot select resources in the inspector, that is, project locking
H5关闭当前页面,包括微信浏览器(附源码)
GDAL multiband synthesis tool
Atcoder 238
Oracle ASMM和AMM
信息学奥赛一本通 1400:统计单词数 (字符串匹配)
'教练,我想打篮球!' —— 给做系统的同学们准备的 AI 学习系列小册
详解C语言编程题:任意三条边能否构成三角形,输出该三角形面积并判断其类型
D - Face Produces Unhappiness