iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎样解析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://www.lsjlt.com/news/301605.html(转载时请注明来源链接)

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

    本篇文章演示代码以及资料文档资料下载

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

    下载Word文档
    猜你喜欢
    • 怎样解析TypeScript基础类型
      怎样解析TypeScript基础类型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。TS 的静态类型可以人为的分为两类:基础类型:像布尔值(boolean)、数字(number)...
      99+
      2023-06-22
    • 详解TypeScript的基础类型
      目录布尔类型数字类型字符串类型字符串和数字进行拼接undefined和 null数组类型元组类型枚举类型any类型void类型联合类型总结布尔类型 // 布尔类型--->boo...
      99+
      2022-11-12
    • TypeScript基础类型介绍
      目录1.基础类型 2.对象类型 2.1数组 2.2元组 2.3对象 3.类型推断 3.1类型联合中的类型推断 3.2上下文类型 4.类型断言 TS 的静态类型可以人为的分为两类: 基...
      99+
      2022-11-12
    • TypeScript 映射类型是怎样的
      这期内容当中小编将会给大家带来有关TypeScript 映射类型是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。前言:TypeScript 的官方文档早已更新,但我能找到的中文文档都还停留...
      99+
      2023-06-22
    • 怎样解析Java基础多线程
      怎样解析Java基础多线程,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。 多线程是Java学习的非常重要的方面,是每个Java程序员必须掌握的基本技能。一、进程...
      99+
      2023-06-02
    • TypeScript基本类型之typeof和keyof详解
      目录编译并运行 TS 代码TypeScript基础数组类型   []联合类型  |类型别名函数类型 void类型可选参数 参数默认值=&nbs...
      99+
      2023-05-14
      ts中的typeof ts基本类型typeof ts基本类型keyof
    • TypeScript基本数据类型实例详解
      目录TypeScript 介绍类型分配类型推导数组元组objectnull 和 undefined特殊类型anyunknownnevervoidTypeScript 介绍 Type...
      99+
      2023-01-30
      TypeScript 基本数据类型 TypeScript 数据类型
    • TypeScript中基本数据类型的示例分析
      这篇文章主要为大家展示了“TypeScript中基本数据类型的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“TypeScript中基本数据类型的示例分析...
      99+
      2022-10-19
    • TypeScript中的递归类型示例解析
      目录正文什么是递归类型?示例1:树形结构示例2:链表总结正文 在这篇博客中,我们将深入探讨TypeScript中的递归类型。递归类型是一种非常强大的功能,它允许我们对具有自相似结构...
      99+
      2023-05-14
      TypeScript递归类型 TypeScript 类型
    • mysql8.0.19基础数据类型详解
      mysql基础数据类型 mysql常用数据类型概览 ![1036857-20170801181433755-146301178](D:\笔记\mysql\复习\1036857-2017080118143...
      99+
      2022-10-18
    • Javascript基础之类型的示例分析
      这篇文章主要介绍了Javascript基础之类型的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。基本类型  Javascript有5...
      99+
      2022-10-19
    • C#枚举类型的基础讲解
      本篇内容主要讲解“C#枚举类型的基础讲解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C#枚举类型的基础讲解”吧!对于C#枚举类型不仅可以提高程序的可读性,而且可以减少因底层值发生改变而导致的程...
      99+
      2023-06-18
    • Python基础之数据类型详解
      目录一、整数二、浮点数三、复数四、运算符,优先级以及结合性五、混合类型计算六、除法七、十进制,八进制,十六进制和二进制八、位操作九、集合十、布尔类型十一、其他数值类型一、整数 pyt...
      99+
      2022-11-12
    • javascript基础之数据类型详解
      目录1.数据类型1.1 为什么需要数据类型1.2 变量的数据类型1.3 数据类型分类2. 简单数据类型(基本数据类型)2.1 数字型Number1. 数字型进制2.数字型范围2.2 ...
      99+
      2022-11-12
    • TypeScript基本类型之typeof和keyof怎么使用
      本文小编为大家详细介绍“TypeScript基本类型之typeof和keyof怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“TypeScript基本类型之typeof和keyof怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路...
      99+
      2023-07-05
    • TypeScript联合类型,交叉类型和类型保护怎么理解
      本篇内容介绍了“TypeScript联合类型,交叉类型和类型保护怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.联合类型所谓的联合...
      99+
      2023-06-22
    • C语言基础隐式类型转换与强制类型转换示例解析
      目录类型转换隐式类型转换强制类型转换类型转换 数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。 转换包括隐式类型转换和强制类型转换。 类型转换的原则:占用内...
      99+
      2022-11-12
    • java基础开发泛型类的详解
      目录前言泛型概念泛型类结论前言 在软件开发中,有许多执行过程很类似,许多人使用复制粘贴完成功能,这种做法虽然编译器不会报错,但会使用波浪线给出提示,给以后的维护带来了很大的隐患。这种...
      99+
      2022-11-12
    • js中基础的数据类型详解
      目录六种数据类1、String2、Number3、Boolean4、Null和undefined5、强制类型转换6、将其他的数据类型转换为Number7、将其他的数据类型转换为Boo...
      99+
      2022-11-12
    • JavaScript基础之数据类型的示例分析
      这篇文章主要为大家展示了“JavaScript基础之数据类型的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript基础之数据类型的示例分析...
      99+
      2022-10-19
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作