当前位置:网站首页>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
- 信息学奥赛一本通 1405:质数的和与积 (思维题)
- Excerpt from three body
- 这才是优美的文件系统挂载方式,亲测有效
- Heap optimization dijkstra/hash table storage node number
- Pychar remotely connects to the server to run code
- Attention meets Geometry:几何引导的时空注意一致性自监督单目深度估计
- NVIDIA SMI error
- 启动Redis报错:Could not create Server TCP listening socket *:6379: bind: Address already in use–解决办法
- 赠书 | 《认知控制》:我们的大脑如何完成任务?
猜你喜欢

赠书 | 《认知控制》:我们的大脑如何完成任务?

【 Native cloud】 Éditeur ivx Programmable par tout le monde

15 bs对象.节点名称.节点名称.string 获取嵌套节点内容

Question bank and answers of the latest Guizhou construction eight (Mechanics) simulated examination in 2022

JVM 输出 GC 日志导致 JVM 卡住,我 TM 人傻了

15 BS object Node name Node name String get nested node content

Stream常用操作以及原理探索

Login authentication service

GDAL multiband synthesis tool

Matplotlib common operations
随机推荐
'coach, I want to play basketball!'—— AI Learning Series booklet for system students
Excel-vba quick start (II. Condition judgment and circulation)
网上股票开户安不安全?谁给回答一下
Setup instance of layout manager login interface
【雲原生】 ”人人皆可“ 編程的無代碼 iVX 編輯器
15 bs对象.节点名称.节点名称.string 获取嵌套节点内容
This is the graceful file system mounting method, which is effective through personal testing
Understand the difference and use between jsonarray and jsonobject
Attention meets Geometry:几何引导的时空注意一致性自监督单目深度估计
手机股票注册开户安全吗,有没有什么风险?
工作上对金额价格类小数点的总结以及坑
K gold Chef (two conditions, two points and difference)
Atcoder bit operation & Conclusion + formula derivation
信息学奥赛一本通 1405:质数的和与积 (思维题)
备战数学建模30-回归分析2
Electron
《三体》摘录
One copy ten, CVPR oral was accused of plagiarizing a lot, and it was exposed on the last day of the conference!
Matplotlib common operations
Go变量的声明与赋值