TypeScript中的常用的数据类型

常见的三种值类型

数字类型
// 申明一个数字类型的值
let a: number
a = 10
字符串类型
// 申明一个字符串类型的值
let b: string = 'hello'
布尔类型
// 申明一个bool类型的值
let c: boolean = true

PS:类型注释

冒号 + 类型的叫类型注释

: string这种叫类型注释

其他常见类型

字面量类型
// 字面量进行类型申明(字面量:即就是这个值本身)
let aa: 10
// a修改为其他值就会报错
aa = 11

// 实际开发中很少这么用,但是我们可以这么用
// 申明一个变量等于男或者女
let sex: 'male' | 'female'
// 我们使用的时候就可以赋值其中一个值,赋值其他值就会报错
sex = 'male'
sex = 'female'
sex = 'hello'
联合类型
// | 线可以用来连接多个类型(联合类型)
// 除了用在字面量中,常规的使用当中有的更多
let bb: boolean | number
bb = true
bb = 123
// 赋值字符串,就错了
bb = 'hi'
any类型
// 申明任意类型的数据
// any表示任意类型,一个变量设置为any后相当于对该变量关闭了TS的类型检测
let cc: any
cc = 123
cc = true
cc = 'hi'

// 隐式any,即申明,但是不设置类型,如下
let dd
dd = 123
unknown类型
// unknown 表示未知类型
let ee: unknown
ee = 123
ee = true
ee = 'hi'
any和unknown比较
// 那么any和unknown有什么区别呢?
// any可以赋值给任何变量
let ff: string
ff = cc
// unknown实际上就是一个类型安全的any
// unknown类型的变量不能直接赋值给其他变量
let gg: string
gg = ee
// 如何处理这种报错呢?
// 1.类型判断
if(typeof ee === 'string') {
    gg == ee
}
// 2.类型断言(意思是,ee就是一个string,你就放心用了)
gg = ee as string
gg = <string>ee
PS:类型断言
  • 断言语法
    • 1.变量 as 类型
    • 2.<类型>变量
void类型
// void用来表示空,以函数为例,表示没有返回值的函数
function fn():void {
    console.log(11111)
}
// never表示永远不会返回结果
function fn2(): never {
    throw new Error('出错了')
}

object类型
// object表示一个js对象
let obj: object
obj = {}
obj = function() {

}
// js中对象太多了,一般不像上面这样申明,那么我们在上面时候用这种形式呢?
// 比如我们申明一个变量,但是我们希望变量中包含某个值时
let obj2: {name: string}
// 这样是正确的
obj2 = {name: '景天'}
// 这样就会报错
obj2 = {}
// 写多了也会报错
obj2 = {name: '景天',age:18}

// 那么我们就是要age,而且age也不确定有没有,怎么写呢?
let obj3: {name: string,age?: number}
// 这样都正确
obj3 = {name: '景天'}
obj3 = {name: '景天',age:18}

// 但是实际开发中,我们还会有不确定有多少其他属性值,怎么处理呢?
let obj4: {name: string, [propName:string]:any}
// 这样的话,除了要求的值,其他随便写不写,写什么都无所谓了
obj4 = {
    name: '景天',
    age: 18,
    c: true
}
函数
// 如何设置函数的类型申明呢?
// 这表示函数两个参数,都是number类型,返回值也是number类型
let fn1: (a:number,b:number) => number
fn1 = function(n1,n2) {
    return n1 + n2
}

// 函数中使用另一种类型限制
// ): number是限制返回值的类型的
function add(a: number,b:number): string {
    return String(a + b)
}
数组
/*
    array,两种申明方式(这也是一种泛型的写法)
    1. 类型[]
    2. Array<类型>
*/
// 纯字符串数组
let arr: string[]
arr = ['a','b','c']
// 纯数字数组
let arr2: Array<number>
arr2 = [1,2,3]
元组
// tuple(元组):固定长度的数组
let yuanzu: [string,number]
yuanzu = ['111',222]
枚举
// enum: 枚举
// 申明一个枚举类
enum Gender {
    male = 1,
    female = 0
}

let hh: {name: string,gender: Gender}
hh = {
    name: '景天',
    gender: Gender.male
}
类型的别名
// 类型的别名
type myType = string
// 这相当于还是string
let ii: myType

// 但是这样的话,通常没什么意义,而我们用字面量类型的时候,有时候可以使用
type jjType = 1 | 2 | 3 | 4 | 5 | 6 
// 这样无论我们多少个地方使用,都可以直接用了
let jj: jjType
let kk: jjType
let ll: jjType

// 任何类型都可以有别名
// 比如object
type obj = {
    x:number,
    y:number
}

// 别名的扩展
// 一个新的obj1在上面的obj的基础上扩展
type obj1 = obj & {
    z: number
}

JS在ES6以后加的两个类型

bigint
  • 意为比较大的整数
  • ES2020以后添加
// 括号里面可以是number 和 string
const bigNumber: bigint = BigInt(123)
const bigNumber2: bigint = 456n

console.log(bigNumber)   // 123n,打印发现是有个n在数字后面,但是我们使用值得时候,是没有n的
console.log(bigNumber2)  // 456n
symbol
  • 意为全局唯一引用
const firstName = Symbol('name')
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容