我的编程空间,编程开发者的网络收藏夹
学习永远不晚

怎样解析TypeScript基础类型

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

怎样解析TypeScript基础类型

怎样解析TypeScript基础类型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

    TS 的静态类型可以人为的分为两类:

    基础类型:像布尔值(boolean)、数字(number)、字符串(string)、Any(任意类型)、Void(无类型)、NullUndefinedNever(无值类型)

    对象类型:像数组、函数、对象、枚举、元组。

    1.基础类型

    TS的类型定义主要通过以下示例代码中演示的方式进行定义:

    ;(function () {    // 布尔型  let boo: boolean = false // 赋值非布尔值将会抛出异常  // 数字类型  let num: number = 100  // 字符串  let str: string = '字符串' // 使用单引号或者双引号定位  str = `模板字符串` // 使用模板字符串定义  // Any 类型 -> 表示该类型可以为动态的类型,该类型在编译的时候移除了类型检查  let AnyType: any = 123  AnyType = true // 重复赋值不会抛出异常  // Void 类型 -> 通常用于没有返回值的函数类型  function demo(): void {    console.log('测试void类型')  }  demo()  // 还有两个比较特殊的类型,就是 null 和 undefined  // 这两个类型是所有类型的子类型,也就是说可以将这两个两个类型赋值给 number、string 等类型  let u: undefined = undefined  num = u // 将 number 类型的变量赋值为 undefined  let n: null = null  boo = n // 将 boolean 类型的变量赋值为 null})()

    基础类型比较简单,特别类似于JavaScript,简单看来就是比JavaScript多了一个类型定义

    TS 中还有一个Never类型。该类型表示的是那些永远不会存在的值得类型。

    例如:never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型。

    2.对象类型

    2.1数组

    TS中的数组不同于JS中的数组,在TS中使用数组不仅可以将一个变量定义为数组,也可以定位数组中的类型。

    示例代码如下所示:

    ;(function () {  // 定义一个仅仅为数字的数组类型  let arr1: number[] = [1, 2, 3]  console.log(arr1)  // 定义一个可以为 数字 字符串 布尔值的数组  let arr2: (number | string | boolean)[] = ['1', '2', true]  console.log(arr2)  // 定义一个任意类型的数组  let arr3 = [1, ['1', '2', true], true]  console.log(arr3)  // 定义个对象类型的数组,对象中必须有 name 和 age 两个属性  const objectArray: { name: string; age: number }[] = [    { name: '一碗周', age: 18 },  ]  // 或者通过 type alias 类型别名的方式声明  // 通过 type 定义一个类型别名  type User = { name: string; age: number }  const objectArr: User[] = [{ name: '一碗周', age: 18 }]})()

    2.2元组

    元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

    示例代码如下所示:

    ;(function () {  // 定义一个值分别被 string 和 number 的元组  let tuple: [string, number] = ['123', 123]  console.log(tuple) // [ '123', 123 ]  // 通过索引赋值  tuple[0] = 'string'  console.log(tuple) // [ 'string', 123 ]  // 赋值其他类型  // tuple[0] = true  // console.log(tuple) // 抛出异常})()

    元组的主要作用就是约束数组中的每一项,及其数组的长度。

    元组和数组是可以可以嵌套的,语法结构如下所示:

    // 元组和数组的嵌套let tuples: [string, number][] = [    ['123', 123],    ['456', 456],]

    上面的代码中,[string, number]表示一个元组,在后面增加[],就表示这个一个存放元组的数组。

    2.3对象

    一个对象中可以包含以上所有的类型,示例代码如下所示:

    ;(function () {  // 定义一个对象,里面包含 MyName 和 age 两个属性,其中 MyName 为 string 类型 age 为number 类型  let obj: {    MyName: string    age: number  }  // 对象的赋值,如果不按上面指定的类型进行赋值会抛出异常  obj = {    MyName: '一碗周',    age: 18,  }  console.log(obj) // { MyName: '一碗周', age: 18 }})()

    在TS中我们并不需要在每个地方标注类型,因为类型推断 可以帮助我们在不编写额外代码的,即可获得其功能。但是你想让你的代码可读性更好一些,可以写上每个的类型。

    3.类型推断

    在TypeScript中有的时候并需要明确指定类型,编译器会自动推断出合适的类型,比如下面这段代码:

    ;(function () {  let myName = '一碗周'  myName = true // 错误:不能将类型“boolean”分配给类型“string”})()

    我们定义myName变量时,并没有指定其数据类型,只是为他赋了一个字符串的值,但是我们如果将这个值重新赋值为要给非string类型的值时,编译器将会抛出异常。

    这就是TypeScript中最简单的类型推断,根据右侧的值来推测变量的数据类型。

    3.1类型联合中的类型推断

    什么是类型联合请参考:联合类型、交叉类型和类型保护

    若一个变量可能具有多个类型的值时,TypeScript 会将多个类型合并起来,组成一个联合类型,

    示例代码如下:

    let arr = [1, '2'] // 定义一个包含字符串和数字的一个数组// 为上面定义的数组重新赋值// arr = [true, false] // 错误 不能将类型“boolean”分配给类型“string | number”// 还有如下例子let val = arr.length === 0 ? 0 : '数组长度不是0'// val = false //  错误 不能将类型“boolean”分配给类型“string | number”

    3.2上下文类型

    在这之前介绍的例子可能都是按照=右边的值来推断=左边的类型。现在要介绍的上下文类型就与之前的类型推断不同,编译器会根据当期变量所处的上下文环境来推断出变量的类型。

    示例代码如下:

    ;(function () {  // 定义一个接口  interface Person {    name: string    age: number  }  // 通过上面定义的接口定义一个数组  let arr: Person[] = [{ name: '一碗周', age: 18 }]  // 遍历定义的数组  arr.forEach(item => {    // 根据当前所处的环境,编译器自动推断出 item 为 hobby 类型且不具有 hobby 属性    console.log(item.hobby) // 类型“Person”上不存在属性“hobby”  })})()

    在上面的代码中,我们首先定义了一个Person的接口,然后用这个接口定义一个数组,遍历该数组时编译器推断itemPerson类型,所以编译器抛出异常。

    如果我们为函数表达式的参数添加类型注解,上下文类型将会被忽略到,也就不会在报错了。

    示例代码如下:

    // 如果在上下文中明确类型信息,上下文将会被忽略。arr.forEach((item: any) => {    // 根据当前所处的环境,编译器自动推断出 item 为 hobby 类型且不具有 hobby 属性    console.log(item.hobby) // 类型“Person”上不存在属性“hobby”})

    4.类型断言

    所谓的类型断言就是你来告诉TS这个值得数据类型就是某样的,你不需要做检查。

    这样做得话他在运行是不会影响,只有在编译的时候回影响。

    示例代码如下:

    let SomeValue: any = 'this is a string'// 语法一let StrLength2: number = (<string>SomeValue).length// 语法二 as 语法let StrLength3: number = (SomeValue as string).length

    值得注意的是:在TS中使用JSX时,只有第二种语法是被支持的。

    看完上述内容,你们掌握怎样解析TypeScript基础类型的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网行业资讯频道,感谢各位的阅读!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    怎样解析TypeScript基础类型

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    怎样解析TypeScript基础类型

    怎样解析TypeScript基础类型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。TS 的静态类型可以人为的分为两类:基础类型:像布尔值(boolean)、数字(number)
    2023-06-22

    TypeScript 映射类型是怎样的

    这期内容当中小编将会给大家带来有关TypeScript 映射类型是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:TypeScript 的官方文档早已更新,但我能找到的中文文档都还停留在比较老的
    2023-06-22

    怎样解析Java基础多线程

    怎样解析Java基础多线程,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 多线程是Java学习的非常重要的方面,是每个Java程序员必须掌握的基本技能。一、进程
    2023-06-02

    TypeScript基本数据类型实例详解

    这篇文章主要为大家介绍了TypeScript基本数据类型实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-01-30

    TypeScript基本类型之typeof和keyof详解

    typeof在js中typeof是检查类型的,在ts中也有这个功能,下面这篇文章主要给大家介绍了关于TypeScript基本类型之typeof和keyof的相关资料,需要的朋友可以参考下
    2023-05-14

    Oracle数据类型解析:从基础到进阶

    Oracle数据类型解析:从基础到进阶Oracle数据库是一款强大的关系型数据库管理系统,广泛应用于企业级应用程序开发和数据存储中。在Oracle数据库中,数据类型是非常重要的概念,它定义了数据存储的格式和范围。本文将从基础到进阶,系统地
    Oracle数据类型解析:从基础到进阶
    2024-03-07

    TypeScript中的递归类型示例解析

    这篇文章主要为大家介绍了TypeScript中的递归类型示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-14

    深入剖析Python数据类型:从基础类型到复杂类型

    Python数据类型全解析:从基本类型到复合类型,需要具体代码示例概述:在Python编程中,数据类型是非常重要的概念。Python提供了丰富的数据类型,包括基本类型和复合类型。本文将对Python的数据类型进行全面解析,讲解它们的特点、
    深入剖析Python数据类型:从基础类型到复杂类型
    2024-01-20

    C#枚举类型的基础讲解

    本篇内容主要讲解“C#枚举类型的基础讲解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#枚举类型的基础讲解”吧!对于C#枚举类型不仅可以提高程序的可读性,而且可以减少因底层值发生改变而导致的程
    2023-06-18

    TypeScript联合类型,交叉类型和类型保护怎么理解

    本篇内容介绍了“TypeScript联合类型,交叉类型和类型保护怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.联合类型所谓的联合
    2023-06-22

    TypeScript基本类型之typeof和keyof怎么使用

    本文小编为大家详细介绍“TypeScript基本类型之typeof和keyof怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“TypeScript基本类型之typeof和keyof怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路
    2023-07-05

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录