广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >TypeScript基础类型介绍
  • 886
分享到

TypeScript基础类型介绍

2024-04-02 19:04:59 886人浏览 八月长安
摘要

目录1.基础类型 2.对象类型 2.1数组 2.2元组 2.3对象 3.类型推断 3.1类型联合中的类型推断 3.2上下文类型 4.类型断言 TS 的静态类型可以人为的分为两类: 基

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 StrLength1: number = (<string>SomeValue).length
// 语法二 as 语法
let StrLength2: number = (SomeValue as string).length

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

到此这篇关于TypeScript基础类型介绍的文章就介绍到这了,更多相关TypeScript基础类型内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: TypeScript基础类型介绍

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

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

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

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

下载Word文档
猜你喜欢
  • TypeScript基础类型介绍
    目录1.基础类型 2.对象类型 2.1数组 2.2元组 2.3对象 3.类型推断 3.1类型联合中的类型推断 3.2上下文类型 4.类型断言 TS 的静态类型可以人为的分为两类: 基...
    99+
    2022-11-12
  • typeScript入门基础介绍
    目录一、安装 TS二、Vscode 自动编译 ts三、入门 TS基础数据类型接口类TS 的特点: 始于 javaScript 归于 javaScript 。强大的类型系统。先进的 j...
    99+
    2022-11-13
  • 详解TypeScript的基础类型
    目录布尔类型数字类型字符串类型字符串和数字进行拼接undefined和 null数组类型元组类型枚举类型any类型void类型联合类型总结布尔类型 // 布尔类型--->boo...
    99+
    2022-11-12
  • TypeScript 类型级别示例介绍
    介绍 这是一门在线课程,旨在将您的TypeScript技能从中级提升到高级。它将使你深入了解类型系统的基本原理,并指导你完成其高级功能。在这里,你会找到成为TypeScript专家...
    99+
    2023-02-27
    TypeScript 类型级别 TypeScript 类型
  • JavaScript基础语法与数据类型介绍
    目录一、JavaScript语法1、区分大小写2、标识符3、注释4、变量二、JavaScript的数据类型1、Undefined类型2、Null类型3、Boolean类型4、Numb...
    99+
    2022-11-13
  • 怎样解析TypeScript基础类型
    怎样解析TypeScript基础类型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。TS 的静态类型可以人为的分为两类:基础类型:像布尔值(boolean)、数字(number)...
    99+
    2023-06-22
  • VXLAN基础介绍
    VXLAN简介 VXLAN(Virtual eXtensible Local Area Network,虚拟扩展局域网)采用MAC in UDP封装方式,是NVO3(Network Virtualization over Layer 3)中...
    99+
    2023-09-09
    网络 服务器 网络协议
  • ES6基础语法之class类介绍
    一、class基本语法 JavaScript 语言中,编写一个学生类,代码如下:(prototype可以个对象添加属性和方法) function Student(stuno,stun...
    99+
    2022-11-13
  • Python类和对象基础入门介绍
    目录视频Python 类和对象创建和使用类根据类创建实例视频 观看视频 Python 类和对象 面向对象编程是编写表示现实世界中的事物和情景的类,并基于这些类来创建对象。 编写类时,...
    99+
    2022-11-11
  • Python基础---Python介绍
      python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。  2017年最新的TIOBE排行榜,Py...
    99+
    2023-01-31
    基础 Python
  • TypeScript泛型使用详细介绍
    目录1 什么是泛型2 泛型方法3 泛型类4 泛型接口1 什么是泛型 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别...
    99+
    2022-11-13
    TypeScript泛型 TypeScript泛型使用方法
  • python基本数据类型的介绍
    int(整型)在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-922337203685...
    99+
    2023-01-31
    数据类型 python
  • ES6基础知识介绍
    目录一、ECMAScript和JavaScript关系二、let命令三、const命令四、变量的解构赋值1、数组的解构赋值2、对象的解构赋值一、ECMAScript和JavaScri...
    99+
    2022-11-13
  • PHP基础知识介绍
    php中的整形数是有符号的,不能表示无符号整数,当整形数超出范围时,会自动从整形数转化成float数,可以用php_int_size常量来查看php整数类型所占字节,一般为4个字节,...
    99+
    2022-11-15
    PHP 基础知识
  • TypeScript泛型的使用详细介绍
    目录情景再现使用泛型泛型类型泛型接口泛型类泛型约束在泛型里使用类类型[]高级案例情景再现 这里针对一种情况,也是非常常见的一种情况:那就是 function identity(arg...
    99+
    2022-11-13
  • TypeScript基础class类教程示例
    目录class 类示例构造函数继承class 类 类是面向对象语言的程序设计中的概念,是面向对象编程的基础。 类是创建对象的模板,是对现实生活中一类具有共同特征的事物的抽象 类的内部...
    99+
    2022-11-13
  • Python中的基本数据类型介绍
    Python 中主要有8种数据类型:number(数字)、string(字符串)、list(列表)、tuple(元组)、dict(字典)、set(集合)、Boolean(布尔值)、N...
    99+
    2022-11-11
  • java基本数据类型和包装类介绍
    这篇文章主要介绍“java基本数据类型和包装类介绍”,在日常操作中,相信很多人在java基本数据类型和包装类介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java基本数据类型和包装类介绍”的疑惑有所帮助!...
    99+
    2023-06-03
  • java基础之包装类的介绍及使用
    1. 包装类的介绍 针对八种基本数据类型定义相应的引用类型--包装类(封装类),有了类的热点后,就可以调用类中的方法 2. 基本数据类型 --> 包装类:调用包装类的构造器,...
    99+
    2022-11-12
  • 基础知识:编程语言介绍、Python介绍
    2018年3月19日 今日学习内容: 1、编程语言的介绍 2、Python介绍 3、安装Python解释器(多版本共存) 4、运行Python解释器程序两种方式。(交互式与命令行式)(♥♥♥♥♥) 5、变量(♥♥♥♥♥) 6、数据类型的基...
    99+
    2023-01-31
    基础知识 编程语言 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作