typeScript的类型及声明,断言使用方法(2)

类型的声明

直接赋予变量类型

let str:string ='hellow'
let str1 = 100
str1 = '字符串'

image.png

间接赋予变量类型

let str1 = 100
str1 = '字符串'

image.png

字面量进行类型声明

let num:10|9//只能是6或者是10,类似于常量

方法赋予变量

function add(params1:number,params2?:number):number {
    
    
  return params1+params2
}
let num =add(1,2)
num =''//报错! 方法限制了返回类型为number

image.png

箭头函数

let fun:(a:number,b:number) =>number = fun1(n1:number,n2:number)=>a1*a2
fun = (a,b) =>a*b
不同声明方式
let fun1:(a:number,b:number) =>number = function(n1:number,n2:number){
    
    return n1*n2 }
let fun2:(a:number,b:number) =>number = (n1:number,n2:number)=>n1*n2

对象声明

  1. 对象声明
    当对象声明的时候就固化了对象的属性,和属性类型,必须传入属性,
    如果想让属性可有可无添加问号,
    如果可以随意添加对象属性,需要使用[propName:string:any]
let obj:{
    
    a:number,b?:string,[propName:string:any]}
={
    
    a:1,b:'str',c:'123',d:123}
//问号,非必须参数
let userinfo:{
    
    name:string}
userinfo ={
    
    name:'123'}
console.log(userinfo.name)

数组声明

let arr:number[] =[1,2,6,5,8,9]

元组 (限制数组数量,每一位的类型)

let arr:[string,number,boolean] =['ss',100,true]
let arr2:[number,string][] =[[1,'a'],[2,'b']]

枚举 有点像对象

 enum nums{
    
    
   num1=0,
   num2
 }
 console.log(nums.num1 , nums.num2)// 0 1

别名

//字变量
type myvar =1| 2| 3| 4;
let a:myvar
a = 2
a = 5 //5 不在上面的里面,那么就报错
// 类型
type mytype  = string|number|boolean
function demo(a:mytype,b:mytype,c:mytype){
    
    }
// 方法
type fun=(a:number,b:number)=>number
let fun1:fun=(a:number,b:number)=>a*b
//对象
type obj={
    
    name:string,age:number}
let person:obj ={
    
    name:'csdn:weixin_44000173的博客',age:24}

类型

基础类型

  1. number(int ,float,double,八进制,十进制,十六进制)
  2. boolean(true,false,20>5)
  3. string (‘’,“”,``${123}`)
  4. 数组 let arr:str[] =[],let arr1:Array<number> =[]
  5. 对象 声明的时候固化了属性的类型,也不能添加属性

特殊类型

  1. null,undefined, let aa:null = null只能等于null(undifined)
  2. any 任意类型,声明后可以赋值任意类型//不建议使用
  3. unknown 一个安全的any,个人理解:除了unknown类型或者any类型可以等于unknown类型,其他类型不行。
 let unknown:unknown;
 let string:string='字符串';
 let any:any
 let a:unknown
 any = a
 string = a//报错。
 unknown =  a

image.png
4.void 表示无, 没有返回值

5.never 永远没有返回值,返回报错

联合类型

1.使用或运算

let str:string|number|null
let arr:(string|number|boolean)[]=[1,'stt']
  1. 使用与运算
    //对象必须有两个参数
let obj:{
    
    name:string}&{
    
    age:number}
  1. 元组
    4.字变量
    5.枚举enum

类型断言和缩小 as/as const

类型缩小和as断言

function fun(n:string|number){
    
    
  // 类型“number”上不存在属性“length”
  let len:number
  //类型缩小
  if(typeof n =='string'){
    
    
    len = n.length
  }
  //强制转换
  len = (<string>n).length
  //断言,告知系统这个参数是什么类型
  len = (n as string).length
  console.log(len)
  
  //赋值解构
  function fun (){
    
    
    let str:string='ssss'
    let fun1 = (a:string,b:number):number=>a+b
    return[str,fun1]
  }
  let [str,num] = fun() as [string,(a:number,b:number)=>number]
  
}

as conset,变为只读属性,常量,数组对象等都不能够改变值

let arr = ['ww',14] as const
console.log(arr[0])// ww
arr[0] ='a' //只读属性 不能更改该
let arr2 =<const>['www',15]
arr2[0] ='aa' //只读属性

非空断言,断言属性不能为空 使用感叹号!

let el =document.querySelector('.box')!

猜你喜欢

转载自blog.csdn.net/weixin_44000173/article/details/124749553
今日推荐