1. TypeScript 基础类型

2023-11-15

TypeScript 基础类型

1.布尔、数字、字符串类型

let myname: string = "小米";
let age: number = 18;
let bool: boolean = true;
console.log('1.布尔、数字、字符串类型', myname, age, bool);

2.元组类型

// 限制长度个数、类型一一对应
let tuple: [string, number] = ['123', 1]
tuple.push('456')  // 像元组中增加数据,只能增加元组中存放的类型
// tuple.push(true); // Argument of type 'boolean' is not assignable to parameter of type 'string | number'.
console.log('2.元组类型', tuple)

3. 数组

let arr1:number[] = [1,2,3]
let arr2:string[] = ['1', '2', '3']
let arr3: (number | string)[] = [1, 2, '3']
let arr4: Array<number | string> = [1, 2, '3'] // 泛型方式来声明
console.log('3. 数组', arr1, arr2, arr3, arr4)

4. 枚举类型

enum USER_ROLE1 {
  USER, // 默认从0开始
  ADMIN,
  MANAGER
}
// {0: "USER", 1: "ADMIN", 2: "MANAGER", USER: 0, ADMIN: 1, MANAGER: 2}

enum USER_ROLE2 { // 异构枚举
  USER = 'user',
  ADMIN = 1,
  MANAGER,
}

const enum USER_ROLE3 { // 常量枚举
  USER,
  ADMIN,
  MANAGER,
}
console.log('4. 枚举类型', USER_ROLE1, USER_ROLE2, USER_ROLE3.USER)

5. any类型

// 不进行类型检测
let arrAny:any = ['123',true,{name:'456'}]
console.log('5. any类型', arrAny)

6. null 和 undefined

// 任何类型的子类型,如果 tsconfig.json 内配置 strictNullChecks:true 时(默认为 true),则不能把 null 和 undefined 付给其他类型
let nandb:number | boolean;
nandb = true
// nandb = null; // Type 'null' is not assignable to type 'number | boolean'.
console.log('6. null 和 undefined', nandb)

7. void类型

// 只能接受null,undefined。一般用于函数的返回值 (严格模式下不能将null赋予给void)
let void类型:void;
void类型 = undefined;
// void类型 = null; // strictNullChecks: false (不严格模式) 才不报错
// void类型 = true; // Type 'boolean' is not assignable to type 'void'.
console.log('7. void类型', void类型)

8. never类型

// 任何类型的子类型, never 代表不会出现的值。不能把其他类型赋值给never
function error(message: string): never {
  throw new Error("err");
}
function loop(): never {
  while (true) { }
}
function fn(x:number | string){
  if(typeof x == 'number'){

  }else if(typeof x === 'string'){

  }else{
      console.log(x); // never
  }
}
console.log('8. never类型', error, loop, fn)

9. Symbol类型

// Symbol表示独一无二
const s1 = Symbol('key');
const s2 = Symbol('key');
console.log('9. Symbol类型', s1, s2); // s1 == s2  false

10. BigInt类型

const num1 = Number.MAX_SAFE_INTEGER + 1;
const num2 = Number.MAX_SAFE_INTEGER + 2;
let max: bigint = BigInt(Number.MAX_SAFE_INTEGER)
console.log('10. BigInt类型', num1 == num2, max + BigInt(1) === max + BigInt(2)) // true, false

11. object对象类型

// object表示非原始类型
let create = (obj: object):void => { console.log('11. object对象类型', obj) }
create({})
create([])
create(function(){})
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

1. TypeScript 基础类型 的相关文章

随机推荐

  • 纯干货!!!Python开发必备!!!70+本图书合集(PDF+源码)

    纯干货 Python开发必备 70 本图书合集 PDF 源码 合集包含了从入门到精通 Web 安全 算法 人工智能 游戏 爬虫等一系列技术的专业书籍 其中有多本图书被程序员奉为圭臬 例如 Python编程从入门到实践 笨办法学Python
  • 9、区块链简介

    区块链 Blockchain 在2008年由署名为中本聪的作者在 比特币 一种点对点的电子现金系统 一文提出 指的是一种在对等网络环境下 通过透明和可信规则 构建防伪造 防篡改和可追溯的块链式数据结构 实现和管理事务处理的模式 区块链本质上
  • 【译】IPSEC.CONF(5) - IPsec配置

    NAME ipsec conf IPsec配置 DESCRIPTION ipsec conf指定了Openswan IPsec子系统的大多数配置和控制信息 include ipsec conf 包含指定的配置文件 CONN SECTIONS
  • 【使用 flink-cdc 将数据从 mysql 同时同步到 redis, elastisearch, clickhouse】

    要从 MySQL 同时同步到 Redis Elasticsearch 和 Clickhouse 可以使用 Flink CDC 和 Flink Table API 来实现 首先 需要在 Flink 中配置 CDC 数据源 使其能够连接到 My
  • WIndows10系统 安装Anaconda、Pycharm以及在其中导入Pytorch环境(NVIDIA GPU版本)

    WIndows10系统 安装Anaconda Pycharm以及在其中导入Pytorch环境 NVIDIA GPU版本 1 判断电脑是否具有GPU 2 安装Anaconda 3 创建虚拟环境 3 1 利用conda命令创建虚拟环境 4 GP
  • MySQL——卸载重装MySQL失败?

    该问题通常是因为MySQL卸载时 没有完全清除相关信息导致的 解决办法是 把以前的安装目录删除 如果之前安装并未单独指定过服务安装目录 则默认安装目录是 C Program Files MySQL 彻底删除该目录 同时删除MySQL的Dat
  • [QT_024]Qt学习之QByteArray详解

    本文转自 Qt编程指南 作者 奇先生 Qt编程指南 Qt新手教程 Qt Programming Guide 本节学习 QByteArray 的两种用法 第一种作为字符串处理类 类似 QString 但 QByteArray 内部字符编码不确
  • 时间序列预测方法最全总结!

    时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息 包括连续型预测 数值预测 范围估计 与离散型预测 事件预测 等 具有非常高的商业价值 需要明确一点的是 与回归分析预测模型不同 时间序列模型依赖于数值在时间上的先后顺序 同样
  • 一文讲透CRC校验码-附赠C语言实例

    一口君最近工作用到CRC校验 顺便整理本篇文章和大家一起研究 一 CRC概念 1 什么是CRC CRC Cyclic Redundancy Checksum 是一种纠错技术 代表循环冗余校验和 数据通信领域中最常用的一种差错校验码 其信息字
  • spark Scala中dataframe的常用关键字:withColumn

    withColumn关键字 用于操作dataframe原表某一列的数据 将操作完的每一行数据形成一列 用来替换一个表原有的列或者在原表后面追加新的列 语法如下 def withColumn colName String col Column
  • 家具商城小程序:连接优质家居产品的桥梁

    随着人们对家居生活品质的追求 家具商城小程序成为提供便捷购物和个性化服务的不可或缺的工具 通过家具商城小程序 用户可以浏览并购买各类家具产品 如沙发 床 桌子等 同时 家具商城小程序还提供个性化的推荐 客户评价和在线客服等功能 家具商城小程
  • JMeter性能测试,完整入门篇

    1 Jmeter简介 Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件 相比Loadrunner而言 JMeter小巧轻便且免费 逐渐成为了主流的性能测试工具 是每个测试人员都必须要掌握的工具之一 本文为JM
  • 【Vue入门】语法 —— 事件处理器、自定义组件、组件通信

    目录 一 事件处理器 1 1 样式绑定 1 2 事件修饰符 1 3 按键修饰符 1 4 常用控制符 1 4 1 常用字符综合案例 1 4 2 修饰符 二 自定义组件 2 1 组件介绍及定义 2 2 组件通信 2 2 1 组件传参 父 gt
  • vim 操作命令大全

    曾经使用了两年多的Vim 手册也翻过一遍 虽然现在不怎么用vim了 曾经的笔记还是贴出来 与喜欢vim的朋友分享 1 关于Vim vim是我最喜欢的编辑器 也是Linux下第二强大的编辑器 虽然emacs是公认的世界第一 我认为使用emac
  • Job for named.service failed because the control process exited with error code.怎么解决

    问题 root localhost systemctl restart named Job for named service failed because the control process exited with error cod
  • 中台战略-第一章、企业数字化转型

    第一章 企业数字化转型 数字经济是当前所有企业在时代都要考虑的问题 不久的将来 他会成为社会经济中的新引擎 也会逐步推动产业互联和企业商业生态的数字化转型 消费者对于产品与服务的升级需求带动着各类触点场景和产品延伸服务的不断变化 云计算 大
  • npm run serve 卡住解决方案

    问题描述 在本地开发vue前端时 使用npm run serve运行vue项目 却运行到40 左右不动 删除node modules依赖包目录 重新npm install 但还是未解决 解决方案 并不是依赖包的问题 而是代码的原因 在vue
  • QNAP 安装nextcloud私有网盘

    下载nextcloud服务端 并上传到web文件夹下 首先安装并开启PHPmyadmin 在app store搜索并下载PHPmyadmin 同时 打开自带的mariadb服务 默认用户名密码就是qnap自己的用户名和密码 也可以更改 然后
  • 设计模式:高性能IO之Reactor模式

    讲到高性能IO绕不开Reactor模式 它是大多数IO相关组件如Netty Redis在使用的IO模式 为什么需要这种模式 它是如何设计来解决高性能并发的呢 最最原始的网络编程思路就是服务器用一个while循环 不断监听端口是否有新的套接字
  • 1. TypeScript 基础类型

    TypeScript 基础类型 1 布尔 数字 字符串类型 let myname string 小米 let age number 18 let bool boolean true console log 1 布尔 数字 字符串类型 myn