为了使编写的代码更规范,更利于维护
01) 布尔类型(boolean)
02) 数字类型(number)
const decLiteral: number = 6
const hexLiteral: number = 0xf00d
const binaryLiteral: number = 0b1010
const octalLiteral: number = 0o744
注意:我们在使用 BigInt 的时候,必须添加 ESNext 的编译辅助库
"lib": ["es6", "dom", "ESNext"]
03) 字符串类型(string)
04) null 和 undefined
05) 数组类型(array)
第一种方式:
let arrOneType: number[] = [0, 2, 4, 6];
第二种方式(通过泛型定义数组):
let arrTest: Array<string> = ['I', 'am', 'god'];
06) 元组类型(tuple)
属于数组的一种,可以指定数组里面每个元素的类型
let tupleArr: [string[], number] = [['Hello, ', 'ts'], 666666];
console.log('tupleArr = ' + tupleArr);
Object.prototype.toString.call(tupleArr); // [object Array]
元组越界问题:
// 允许向元组中使用数组的push方法插入新元素
tupleArr.push(444); // 数组前面的两个元素指定了类型,不影响后面的元素
// 但是当我们访问新加入的元素时,会报错
// Tuple type '[string, number]' of length '2' has no element at index '2'
console.log(tuple[2]);
07) 枚举类型(enum 定义标识符,标识状态或则固定值)
枚举类型, 其实本质上是 JavaScript 对象.(通过编译后的 JavaScript 了解到)
枚举类型被编译为 JavaScript 后是什么样子:
var Direction;
(function (Direction) {
Direction[Direction["Up"] = 10] = "Up";
Direction[Direction["Down"] = 11] = "Down";
Direction[Direction["Left"] = 12] = "Left";
Direction[Direction["Right"] = 13] = "Right";
})(Direction || (Direction = {}));
背景:
0代表关,1代表开
-------- 尚可接受
0代表周一, 1代表周二, 2代表周三, 3代表周四, 4代表周五, 5代表周六, 6代表周日
-------- 不直观,可读性差
解决:使用相应的单词,来代表某一状态 ---- 使程序易阅读易理解
枚举:枚举状态的值,定义一个具有代表意义的单词
定义一个枚举类型:
enum 枚举类型名 {
标识符[=整型常数],
标识符[=整型常数],
...
标识符[=整型常数]
};
实例:
/**** 1. 定义一个枚举类型 ****/
// 设计数据: pay_status 2未支付 4已支付 6交易结束
enum PayStatus {
payWait = 2,
payDone = 4,
overPay = 6
}
/**** 2. 使用枚举变量 PayStatus.payWait ****/
let phoneWaitPay: PayStatus = PayStatus.payWait; // 2
/**** 官网1. 定义一个枚举类型 ****/
// 设计数据: Color 0 red 1 blue 2 orange
enum Color {
red,
blue,
orange
} // 其实就是告诉我们,可以不指定值,默认从 0 开始
/**** 官网2. 使用枚举变量 Color.blue ****/
let bColor: Color = Color.blue; // 1
/**** 官网1. 定义一个枚举类型 ****/
// 设计数据: Color 0 red 1 blue 2 orange
enum Color {
red,
blue = 5,
orange
} // 其实就是告诉我们,可以不指定值,默认从 0 开始
// 可以从某处开始指定值,后面的值累加
/**** 官网2. 使用枚举变量 Color.blue ****/
let rColor: Color = Color.red; // 0
let bColor: Color = Color.blue; // 5
let oColor: Color = Color.orange; // 6
- 数字枚举:
https://juejin.cn/book/6844733813021491207/section/6844733813117943822
enum Direction {
Up,
Down,
Left,
Right
}
console.log(Direction.Up === 0); // true
console.log(Direction.Down === 1); // true
console.log(Direction.Left === 2); // true
console.log(Direction.Right === 3); // true
- 字符串枚举:
enum Direction {
Up = 'Up',
Down = 'Down',
Left = 'Left',
Right = 'Right'
}
console.log(Direction['Right'], Direction.Up); // Right Up
- 异构枚举:
enum BooleanLikeHeterogeneousEnum {
No = 0,
Yes = "YES",
}
- 常量枚举:
const enum Direction {
Up = 'Up',
Down = 'Down',
Left = 'Left',
Right = 'Right'
}
const a = Direction.Up;
- 反向映射<通过枚举值获取枚举名字>:
enum Direction {
Up,
Down,
Left,
Right
}
console.log(Direction[0]); // Up
- 枚举合并<分开声明枚举,他们会自动合并>:
enum Direction {
Up = 'Up',
Down = 'Down',
Left = 'Left',
Right = 'Right'
}
enum Direction {
Center = 1
}
08) 任意类型(any)
09) void 类型
10) never 类型
10) unknown 类型
function getValue(value: unknown): string {
if (value instanceof Date) {
// 这里由于把value的类型缩小为Date实例的范围内,所以`value.toISOString()`
return value.toISOString();
}
return String(value);
}
RyenToretto/ts0715
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
About
和王多肉一起学习 typescript
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published