和js相同
string
number
boolean
null
undefined
symbol
bigint
object
ts独有
-
any
-
unknown:适合接收远端的数据,在使用前需要断言类型
const a:unknown= 1
(a as number).toFixed()
-
void
-
never
-
Enum:仅适用number定义
- Tuple(元组):声明的时候定义数组长度
let a:[number, string] = [100, '100']
自定义类型type/interface
两者区别
- interface表示对象,支持叠加
区别
-
粒度不同:在 JS 中的类型 number 不可再细分,而 TS 中的 number 可以看做 1、1.1、2、2.3 等无数个小类型的联合 -
可变性不同:JS 中的变量类型是可变的,一个 number 随时可以变成一个 string;TS 中除了 any,其他类型要么是不可变的,要么就算可变也是有限制的
描述普通对象
- 索引签名
type A{
[k: string]: number
}
- Record泛型
type A = Record<string, boolean>
ps:以上两种描述的均为一个key为string类型,value为number类型的对象
数组对象
-
Array<T> -
T[] -
元组:
[T,T,T]
函数对象
- 默认返回值viod
其他对象
使用class(构造对象)描述
const d:Date = new Date()
const r:RegExp = /ab+c/
const r2:RegExp = new RegExp('ab+c')
const m:Map<string, number> = new Map()
const wm:WeakMap<{name: string}, number> = new WeakMap()
const s:Set<string> = new Set()
const ws:WeakSet<{name: string}> = new Set()