返回顶部
首页 > 资讯 > 精选 >怎样解析TypeScript基础类型
  • 934
分享到

怎样解析TypeScript基础类型

2023-06-22 00:06:54 934人浏览 独家记忆
摘要

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

怎样解析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基础类型的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

    --结束END--

    本文标题: 怎样解析TypeScript基础类型

    本文链接: https://lsjlt.com/news/301605.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    猜你喜欢
    • 怎样解析TypeScript基础类型
      怎样解析TypeScript基础类型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。TS 的静态类型可以人为的分为两类:基础类型:像布尔值(boolean)、数字(number)...
      99+
      2023-06-22
    • 详解TypeScript的基础类型
      目录布尔类型数字类型字符串类型字符串和数字进行拼接undefined和 null数组类型元组类型枚举类型any类型void类型联合类型总结布尔类型 // 布尔类型--->boo...
      99+
      2024-04-02
    • TypeScript基础类型介绍
      目录1.基础类型 2.对象类型 2.1数组 2.2元组 2.3对象 3.类型推断 3.1类型联合中的类型推断 3.2上下文类型 4.类型断言 TS 的静态类型可以人为的分为两类: 基...
      99+
      2024-04-02
    • TypeScript 映射类型是怎样的
      这期内容当中小编将会给大家带来有关TypeScript 映射类型是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:TypeScript 的官方文档早已更新,但我能找到的中文文档都还停留...
      99+
      2023-06-22
    • TypeScript基础class类教程示例
      目录class 类示例构造函数继承class 类 类是面向对象语言的程序设计中的概念,是面向对象编程的基础。 类是创建对象的模板,是对现实生活中一类具有共同特征的事物的抽象 类的内部...
      99+
      2024-04-02
    • 怎样解析Java基础多线程
      怎样解析Java基础多线程,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 多线程是Java学习的非常重要的方面,是每个Java程序员必须掌握的基本技能。一、进程...
      99+
      2023-06-02
    • TypeScript基本数据类型实例详解
      目录TypeScript 介绍类型分配类型推导数组元组objectnull 和 undefined特殊类型anyunknownnevervoidTypeScript 介绍 Type...
      99+
      2023-01-30
      TypeScript 基本数据类型 TypeScript 数据类型
    • TypeScript基本类型之typeof和keyof详解
      目录编译并运行 TS 代码TypeScript基础数组类型   []联合类型  |类型别名函数类型 void类型可选参数 参数默认值=&nbs...
      99+
      2023-05-14
      ts中的typeof ts基本类型typeof ts基本类型keyof
    • TypeScript基本类型有哪些
      今天小编给大家分享一下TypeScript基本类型有哪些的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来...
      99+
      2024-04-02
    • Oracle数据类型解析:从基础到进阶
      Oracle数据类型解析:从基础到进阶 Oracle数据库是一款强大的关系型数据库管理系统,广泛应用于企业级应用程序开发和数据存储中。在Oracle数据库中,数据类型是非常重要的概念,...
      99+
      2024-03-07
      数据类型 oracle 进阶
    • TypeScript中基本数据类型的示例分析
      这篇文章主要为大家展示了“TypeScript中基本数据类型的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“TypeScript中基本数据类型的示例分析...
      99+
      2024-04-02
    • TypeScript基础使用实例分析
      这篇文章主要讲解了“TypeScript基础使用实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“TypeScript基础使用实例分析”吧!什么是 TypeScript?TypeScri...
      99+
      2023-07-02
    • TypeScript中的递归类型示例解析
      目录正文什么是递归类型?示例1:树形结构示例2:链表总结正文 在这篇博客中,我们将深入探讨TypeScript中的递归类型。递归类型是一种非常强大的功能,它允许我们对具有自相似结构...
      99+
      2023-05-14
      TypeScript递归类型 TypeScript 类型
    • mysql8.0.19基础数据类型详解
      mysql基础数据类型 mysql常用数据类型概览 ![1036857-20170801181433755-146301178](D:\笔记\mysql\复习\1036857-2017080118143...
      99+
      2024-04-02
    • 深入剖析Python数据类型:从基础类型到复杂类型
      Python数据类型全解析:从基本类型到复合类型,需要具体代码示例 概述:在Python编程中,数据类型是非常重要的概念。Python提供了丰富的数据类型,包括基本类型和复合类型。本文将对Python的数据类型进行全面解析,讲解...
      99+
      2024-01-20
      基本类型 复合类型
    • Javascript基础之类型的示例分析
      这篇文章主要介绍了Javascript基础之类型的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。基本类型  Javascript有5...
      99+
      2024-04-02
    • 基础数据类型
      计算机处理不同的数据需要定义不同的数据类型。改变数字数据类型的值,意味着要重新分配内存空间用来存储新的数值。 int,整数包含正整数和负整数,32位和64位系统的取值范围不同。32位系统的取值范围:-2**31 ~ 2**31-164位系...
      99+
      2023-01-30
      数据类型 基础
    • python - 基础类型 - bool
      bool:python中布尔值使用常量True和False来表示   注:   1.在数值上下文环境中,True被当作1,False被当作0,例如 True+3=>4   2.其他类型值转换bool值时除了''、""、''''''、...
      99+
      2023-01-31
      类型 基础 python
    • 详解 TypeScript 枚举类型
      目录1. 数字枚举2. 字符串枚举3. 反向映射4. 异构枚举5. 常量枚举6. 枚举成员类型和联合枚举类型(1)枚举成员类型(2)联合枚举类型7. 枚举合并前言: TypeScri...
      99+
      2024-04-02
    • 如何分析TypeScript枚举类型
      这篇文章给大家介绍如何分析TypeScript枚举类型,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.概述所谓的枚举类型就是为一组数值赋予名字。enum类型在C++、Java语言中比较常见,TypeScript在Ja...
      99+
      2023-06-22
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作