typescript 基础篇

(小白入坑,不喜勿喷)

任意类型 any

ts的基本类型,可以复制为任意类型


  let a:any

  a = 'hello'  //pass

  a = 123 // pass

  a = [] // pass

字符串 string

ts的基本类型,当一个变量的类型定义为字符串的时候,他的值只能是字符串,若赋值了其他类型的值,则ts就会报错


let name: string

name = "xiaoming"  //pass

name = 123  //报错,类型错误

数字 number

ts的基本类型,当一个变量的类型定义为数字的时候,他的值只能是数字,若赋值了其他类型的值,则ts就会报错


let age: number

age = 28  //pass

age = 'hello'  //报错,类型错误

布尔 boolean

ts的基本类型,当一个变量的类型定义为布尔的时候,他的值只能是布尔,若赋值了其他类型的值,则ts就会报错


let hasMoney:boolean

hasMoney = false  //pass

hasMoney = 'has'  //报错,类型错误

null、undefined

ts的基本类型,null和undefined类型的变量,值只能是null和undefined


let a:null = null

let b:undefined = null

void

ts的基础类型,非严格模式下(tsconfig.compilerOptions.strict = true),值可以是null和undefined,

严格模式下,void类型的值只能是undefined


let a:void

a=null //严格模式下会报错

a=undefined

never

never 类型表示的是那些永不存在的值的类型,一般作为绝对不会有返回值的函数的返回类型,例如函数内部报错或者函数内部无限循环等


//函数抛异常

function errortest():never = ()=>{

  throw '抛出异常,函数走不到最后,不会返回'

}

// 函数不会走到终点

function infiniteLoop(): never {

  while (true) {

    //函数不会走到最后,不会返回

  }

}

枚举

枚举类型是ts的一个特殊类型,可以给一些值赋予比较容易理解的名字,像数组,也像对象

默认情况下,元素成员的值从0开始,依次累加


enum Num { frist, second, third }

console.log(Num) //{0: "frist", 1: "second", 2: "third", frist: 0, second: 1, third: 2}

console.log(Num[0]) // frist

console.log(Num.frist) // 0

也可以修改成员值


enum Num2 { frist = 1, second = 3, third = 1 }

console.log(Num2) //{1: "third", 3: "second", frist: 1, second: 3, third: 1}

console.log(Num2[1]) // third

console.log(Num2.third) // 1

成员下标也可以不是数字


enum Name { one = 'xiaomin', two = 'xiaohong', three = 'xiaogang' }

console.log(Name) //{one: "xiaomin", two: "xiaohong", three: "xiaogang"}

console.log(Name.one) //xiaomin

console.log(Name['xiaomin']) // undefined

const a: Num = Num.frist

console.log(a) //0

tuple元组

元组类型是表示一个已知长度和每一个元素类型的类型


let a = [string,number]

a = ['xiaomin',28]

a = [2,28] //报错

TyeScript 3.1 版本之后,如果访问或改变元组长度之外的元素,也会报错


console.log(a[2]) //报错

a[2] = 3 //报错

数组 Array|[]

ts的基本类型,数组的类型定义方式有两种:Array<type>|type[]


let arr: string[]  //或者 arr:Array<string>

arr = ['1', '2'] //pass

arr = [1,2] //报错,类型错误

console.log(arr);

对象 object

ts基本类型,可赋值为任意对象类型


let a:object

a = {a:1} //pass

a = {b:2} //pass

a = 'hello' //抛错

函数类型

ts允许我们给函数定义类型

可以显示的给函数指定类型


type AddFunc = (num1:number,num2:number)=>number

const addfunc:AddFunc = (num1,num2)=> num1+num2

也可以隐士的给函数指定类型


function addfunc(num1:number,num2:number):number {

  return num1 + num2

}

类型断言

有些情况下,ts无法识别当前变量的类型但是作为开发者本身是可以确定该类型的,为了解决ts无法识别而报错的问题,ts提供了类型断言的方式,类型断言有两种方式 val as string|<string>val

ps jsx语法中只支持val as string这种方式


function test(val:string|number){

//ts无法识别val当前到底是string还是number,所以如果直接使用string或number的属性,会报错

  val.slice(0) //报错

  val.toFixed(1)// 报错



  //给val断言类型之后就不会报错

  (val as string).slice(0)

  // 或者 (val as number).toFixed(1)

}

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

推荐阅读更多精彩内容