【TypeScript】数据类型

86 阅读1分钟

和js相同

string

number

boolean

null

undefined

symbol

bigint

object

ts独有

  1. any

  2. unknown:适合接收远端的数据,在使用前需要断言类型


const a:unknown= 1

(a as number).toFixed()

  1. void

  2. never

  3. Enum:仅适用number定义

  1. Tuple(元组):声明的时候定义数组长度

let a:[number, string] = [100, '100']

自定义类型type/interface

两者区别

  1. interface表示对象,支持叠加

区别

  1. 粒度不同:在 JS 中的类型 number 不可再细分,而 TS 中的 number 可以看做 1、1.1、2、2.3 等无数个小类型的联合

  2. 可变性不同:JS 中的变量类型是可变的,一个 number 随时可以变成一个 string;TS 中除了 any,其他类型要么是不可变的,要么就算可变也是有限制的

描述普通对象

  1. 索引签名

type A{

[k: string]: number

}

  1. Record泛型

type A = Record<string, boolean>

ps:以上两种描述的均为一个key为string类型,value为number类型的对象

数组对象

  1. Array<T>

  2. T[]

  3. 元组:[T,T,T]

函数对象

  1. 默认返回值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()