type
status
date
slug
summary
tags
category
icon
password
js 定义了 8 种内置类型
- 7 种原始类型,使用 typeof 运算符检查:
- Object:
typeof instance === "object"
。
TS 为内置类型提供了相应的原始类型:
number
、string
、bigint
、boolean
、symbol
、null
、undefined
、object
以及其他重要的ts类型
unknown
、never
、void
、T[] 数组类型
、[T,T] 元组类型
、any
、enum
boolean
string
number
undefined | null
默认情况下
undefined
和 null
是所有类型的子类型,即可以赋值给任意类型。但是当我们在
tsconfig.js
文件中设置 strictNullChecks 为 true
时,null
和undefined
只能分配给unknown
,any
以及它们各自的类型(一个例外undefined
是也可以分配给void
)Object
object
表示非原始类型,也就是除6种原始类型( 除 null )之外的类型。Array 数组类型
只读数组 ReadonlyArray
ReadonlyArray
是一种特殊类型,用于描述不应更改的数组。Tuple 元组
用
固定数量
的元素表示一个数组,这些元素的类型是已知的,但不必相同。注意:元组类型超出其范围不能保证其类型。
只读元组 readonly[ T , T ]
any 任意类型
从
TypeScript
第一个版本开始,就有了any
类型。它代表所有可能的 JavaScript
值 — 基本类型,对象,数组,函数,Error,Symbol,以及任何你可能定义的值。在
TypeScript
中,任何类型都可以被归为 any
类型。这让 any
类型成为了类型系统的 顶级类型(也被称作 全局超级类型)。unknown
为什么typescript会出现unknown类型?
如上面介绍的
any
类型,如果被定义为any
类型,那对于它的任何操作,TypeScript
都会认为是正确的。但是这样的机制太宽松了,无法享受TypeScript
的大量保护机制。但如果能有顶级类型也能默认保持安全呢?这就是会出现 unknown
的原因。unknown的使用
就像
any
一样,所有的类型都可以被归为 unknown
。这使得 unknown
成为 TypeScript
类型系统的另一种顶级类型(另一种是 any
)。unknown
类型只能被赋值给 any
类型和 unknown
类型本身。且不能对类型为
unknown
的值执行任何操作。如果要使用类型为
unknown
的值,需要对其缩小类型范围才可以正常操作。never
它是
TypeScript
中的底部类型用来表示那些永不存在的值的类型。例如:
never
类型是那些总是会抛出异常或根本就不会有返回值的函数。
- 永远不可能存在的情况
never
类型是任何类型
的子类型,也可以赋值给任何类型
;然而,没有类型是never
的子类型或可以赋值给never类型(除了never
本身之外)。 即使 any
也不可以赋值给never
。never 使用场景
void
JavaScript
中 void
是一个运算符。用于计算它旁边的表达式。无论是那个表达式,void
总是返回undefined
。TypeScript
中 void
表示一种类型。 表示没有任何类型, 一般用于函数返回值:null
和 undefined
是所有类型的子类型, 所以也可以将 null
和 undefined
赋值给void类型断言
类型断言可以用来手动指定一个值的类型。断言相当于是告诉编译器“相信我,我知道它现在是什么类型”。
语法
使用场景
限制
- 任何类型( 包括
never
)都可以被断言为any
,any
也可以被断言成任何类型
联合类型
可以被断言为其中一个类型,或者是TypeScript
的两个顶级类型any
unknown
多重断言
非空断言(后缀 !)
x!
表示排除 x
值类型中的null
和 undefined
字面量类型
在
TypeScript
中可以使用 string
、 number
、boolean
创建一个字面量类型。模板字面量 TS 4.1新增
函数类型
函数申明
在
JavaScript
中,有两种常见的定义函数的方式——函数声明和函数表达式函数定义类型
在
TypeScript
中为函数定义类型,需要将输入和输出都考虑进去。可选参数
使用?表示当前参数为可选参数,可选参数后面不允许再出现必需参数
函数重载
函数重载或方法重载是使用相同名称和不同参数数量或类型创建多个方法的一种能力。
但是
JavaScript
无法实现重载,因为函数重载需要通过函数名称+参数判断是否是同一函数,而在javaScript当中,参数不是必须的,它只是为我们提供方便。TypeScript
支持函数重载,但因为TypeScript
是JavaScript
的超集,再者TypeScript
的设计原则就是不讲类型带到运行时,所以TypeScript
的重载只是类型重载。TypeScript
允许定义重载函数类型,采多连续多个重载声明
+ 一个函数实现
的方式来实现。比如:TypeScript
在检查一个函数重载的返回值与其实现函数的返回值是否兼容:- 如果函数重载无返回值,兼容。
- 如果函数重载的返回值是函数实现的返回值的
子集
。
- 如果函数重载的返回值是函数实现的返回值的
超集
。
使用场景
- 作者:小白
- 链接:https://xiaobai-notes.top/article/ts-template-1
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。