TS多了哪些类型
前言
首先来看,“鼎鼎大名”的any
类型
any类型
Any
类型的变量可以赋值任意类型的值
let any1: any = 'xxx'
void的类型
void
用于表示返回空
如下例子,表示没有返回
function fn():void{
console.log('This is a fn,but return is void')
}
enum类型
enum
枚举类型,可以理解为通过enum
关键字声明一个特殊的类型,例如:
enum Direction {
NORTH,
SOUTH,
EAST,
WEST,
}
let dir: Direction = Direction.NORTH;
通过type声明类型
TS
中提供了一些基本类型,另外类也可以当类型。但是有的时候我们需要一些更灵活的类型,这就需要自定义一些类型或者叫类型声明
声明类型需要借助一个关键字type
例如
type User = {
name: string;
age?: number;
}
以上代码定义了一个User
类型,该类型必须有name
属性类型为string
,可以选择有或者没有类型为number
的age
属性
let user: User;
user = {
name: 'Alice'
}
上述代码,声明一个user
变量要求是我们定义的User
类型并赋值,赋值时需要值与定义的类型对应
当然不仅仅用于变量,自定义类型跟普通类型一样,可以用于所有能用类型的地方,没有限制,比如函数的形参等等
function show(obj: User) {
console.log(obj.name)
}
show(user);
可以看到使用type
关键字可以很方便的创建一个新类型
tuple 元组类型
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同
let x: [string, number];
x = ['hi', 1];
never类型
never
类型表示的是那些永不存在的值的类型
比如无法达到的终点的一些函数
function error(message: string): never {
throw new Error(message);
}
数组类型
表示的就是数组,形式如下所示:
let list: number[] = [1, 2];
泛型数组
泛型数组和数组类型很像,只是格式不一样,比如上面的list数组,写成泛型的形式,如下:
let list: Array<number> = [1, 2];
总结
我们介绍了好多TS
中所特有的类型,其实还有几个特有的,比如上篇中提到的Object和{}类型,以及在TS
中所有的类都可以作为类型
以上就是本文的所有内容,可能有遗漏,欢迎指正!
转载自:https://juejin.cn/post/7025842132938129422