TS-1-类型

news/2024/11/8 22:47:15/

TypeScript中的基本类型

TS变量声明时指定类型

  • 通过类型声明可以指定TS中变量(参数、形参)的类型,(类型使用小写),使得变量只能存储某种类型的值

  • 类型

    类型例子描述
    number1, -33, 2.5任意数字
    string‘hi’, “hi”, hi任意字符串
    booleantrue、false布尔值true或false
    字面量其本身限制变量的值就是该字面量的值
    any*任意类型
    unknown*类型安全的any
    void空值(undefined)没有值(或undefined)
    never没有值不能是任何值
    object{name:‘孙悟空’}任意的JS对象
    array[1,2,3]任意JS数组
    tuple[4,5]元素,TS新增类型,固定长度数组
    enumenum{A, B}枚举,TS中新增类型
  • 基本语法:

    let 变量: 类型;//先声明再赋值
    let 变量:类型 = 值; //同时声明和赋值
    let 变量=值;//声明和赋值时同时进行的,可以省略掉类型声明,默认为值的类型
    function fn(参数:类型,参数:类型) :类型 {}

      let name:stringname='huge' //name=123    //提示错误let age:number = 123 // let age=123//结果age都是设定为number类型
  • 字面量:

    • 直接使用字面量进行类型声明

      let a: 10; // 变量a就等于10,类似const定义变量,不可以赋其他值

    • 可以使用 | 来连接多个类型(联合类型)

      let b: “man” | “women”; //变量b 可以是这个两个值其中一个
      b = “man”
      b = “women”

      let c: boolean | string ;//变量c 可以是布尔类型,亦可以是字符串类型
      c = true
      c = ‘hello’

  • any类型:

    • any表示所有类型都可以使用,如果声明变量不指定类型,默认为any类型

    let d:any
    d = 123
    d = true
    d = “abcd”

    let e //变量不指定类型,默认为any类型
    e = 123
    e = true
    e = “abcd”

    • any类型的变量可以被赋值给其他类型的变量

    let a:string
    let b:any = 123
    a = b //此时a的类型就变成了any
    a= true //如果再将其他类型的赋值给a, 是不允许的,a还是只能接受string类型

  • unknown类型:

    • 表示未知类型的值,unknown类型的变量,不能直接赋值给其他变量

    let e:unknown
    e = 10 / e = “hello” /… 变量e可以接受任何类型的值

    let a:number = 10
    e = ‘hello’
    a = e (报错) //不能直接赋值

    if(typeof e === ‘number’) a = e //先判断类型相同再赋值
    类型断言,确定了e的类型是和a的类型一致,才能赋值

    • 语法:

      1. 变量 as 类型
      2. < 类型 > 变量

    a = e as number
    a = < number > e

  • void 类型

    • void 用来表示空,以函数为例,就表示没有返回值的函数

    let a:void
    a = 123 [ 错误 ]
    a = “abc” [ 错误 ]
    a = undefined [ 正确 ]

      function fn() {} // 没有设置类型,函数默认void,既可以有返回值又可以没有返回值function fn2():void {} //指定了void类型,则函数不能有返回值
    
  • never 类型

    • never表示永远不会有返回结果,undefined
  • object 类型

    • 如果想让变量的类型为object

      let a :{}
      a = {name:‘胡歌’}
      a = {age:10,name:‘胡歌’}

    • 规定变量具体内容

        let b:{name:string, age:number} // 变量接受的赋值必须和规定的内容一模一样b={name:'胡歌', age:20} //正确b={name:'胡歌'}         //报错b={name:'胡歌', age:20, love:'car'}//报错let c:{name:string, age?:number} //属性名后加了问号,则表示属性可选,不是必须let d:{name:string, [propName:string]:any} // [propName:string]:any} 表示可以添加任意类型的属性d={name:"胡歌", love:"钓鱼" , age:10} // 必须存在name属性,其他属性可以随便添加
      
    • 设置函数结构的类型声明:

      语法: (形参:类型,形参:类型,…) => 返回值类型

        let a: (num:number,num2:number)=>numbera= function(num:number,num2:number):number{return num+num2}
      
  • array 类型

    • 数组的类型声明
    1. 类型[]
    2. Array<类型>
      let a: string[]a=["a","b","c"]let b: Array<number>b=[1,2,3,4]let c:Array<any>c=[1,2,"a","b"]
    
  • tuple 元组

    • 元组就是固定类型的数组
      //语法: [类型,类型,...]let a: [string , number ]a =["a",123]      //正确a =["a"]          //错误a =["a",123,"b"]  //错误
    
  • enum 枚举

    • 将可能的结构都列举出来,适用与固定几个值,例如性别
      //1. 声明定义枚举类型enum Sex{man,women}let student:{name:string , sex:Sex }student={name:"胡歌", sex:Sex.man}//判断学生性别console.log(student.sex===Sex.man)
    
  • 补充

    • &
      let j :{name:string} & {age:number} //表示j必须存在这两个属性,不能少,不能多j={name:'胡歌',age:18}   //正确
    
    • 类型别名
      let num: 1 | 2 | 3 | 4 | 5//如果还有很多变量也需要num这样指定类型type numRule = 1 | 2 | 3 | 4 | 5let a:numRulelet b:numRule
    

http://www.ppmy.cn/news/3523.html

相关文章

vue项目的首屏优化策略

虽然标题是vue项目的首屏优化策略&#xff0c;但是里面绝大部分的方法&#xff0c;对于其他语言写成的单页应用同样适用 1、使用路由懒加载 首屏进入时&#xff0c;直接加载和首屏相关路由&#xff0c;其他全部路由组件实现懒加载&#xff0c;即打开该路由时再去加载&#xff…

「安全狗漏洞通告」Fortinet SSL VPN远程代码执行漏洞解决方案

安全狗应急响应中心监测到&#xff0c;Fortinet发布了FortiOS SSL-VPN的风险通告&#xff0c;漏洞等级&#xff1a;高危&#xff0c;漏洞评分&#xff1a;9.3。漏洞编号&#xff1a;CVE-2022-42475。 安全狗应急响应中心建议广大用户做好资产自查以及预防工作&#xff0c;以免遭…

【华为上机真题 2022】消消乐游戏

&#x1f388; 作者&#xff1a;Linux猿 &#x1f388; 简介&#xff1a;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;Linux、C/C、云计算、物联网、面试、刷题、算法尽管咨询我&#xff0c;关注我&#xff0c;有问题私聊&#xff01; &…

java计算机毕业设计springboot+vue航空公司电子售票系统-机票预订系统

项目介绍 通篇文章的撰写基础是实际的应用需要,然后在架构系统之前全面复习大学所修习的相关知识以及网络提供的技术应用教程,以远程教育系统的实际应用需要出发,架构系统来改善现远程教育系统工作流程繁琐等问题。不仅如此以操作者的角度来说,该系统的架构能够对多媒体课程进…

算法进阶指南:基本算法0x07 贪心

1.Sunscreen 传送门 #include<bits/stdc.h> using namespace std; const int N2510; pair<int,int>a[N],b[N]; int main() {int n,m;cin>>n>>m;for(int i1;i<n;i) cin>>a[i].first>>a[i].second;for(int i1;i<m;i) cin>>b[i…

c++-数据类型

c-数据类型整型取值范围与内存溢出浮点型浮点型coutsetf显示精读浮点数的存储机制&#xff08;还要再看 &#xff09;字符型转义字符字符串型 - stringstring与C字符串字符串操作bool 类型I/Ocin/coutcout控制输出endl整型 short : 2bytesint : 4byteslonglong : longchar : 1…

【程序人生】卡塔尔世界杯吉祥物python海龟绘图(附源代码),世界杯主题前端特效5个(附源码)

卡塔尔世界杯吉祥物python海龟绘图&#xff08;附源代码&#xff09; 世界杯主题前端特效5个&#xff08;附源码&#xff09;程序人生 本文目录&#xff1a; 一、python turtle海龟绘图卡塔尔世界杯吉祥物 &#xff08;1&#xff09;、世界杯吉祥物“Laeeb”绘制效果图 &am…

JS之DOM

1、节点的属性&#xff08;nodeName、nodeType、nodeValue&#xff09;&#xff1a; 文档节点&#xff1a; nodeType 9nodeValue nullnodeName #document 元素节点&#xff1a; nodeType 1nodeValue nullnodeName 标签名 属性节点&#xff1a; nodeType 2nodeValue 属性值…