系统学习 TypeScript(三)——基础类型
前言
TypeScript 包含的基础类型总结起来有:
- 布尔值
- 数字
- 字符串
- 数组
- 元组
- 枚举
- 任意值
- 空值
- Null 和 undefined
- Never
- Object
今天,我们就来详细了解一下各个类型所代表的含义及表示方法。
布尔值 → boolean
它只有两个值——true 和 false。
let isNew: boolean = true;
数字 → number
TypeScript 中的整形和浮点数类型都是 number,这点和 JavaScript 是一样的,比如:十进制、二进制、八进制和十六进制的类型都是 number。
let decAge: number = 22;
let hexAge: number = 0x0016;
let binaryAge: number = 0b10110;
let octalAge: number = 0o026;
// 以上变量使用 (number).toString(10) 转换为十进制都为 22
可使用
(number).toString(进制)
将数字转换为任意进制的类型。
字符串 → string
和 JavaScript 一样,字符串的值使用单引号或者双引号包裹:
let myName: string = "编程三昧";
let myHomepage: string = `example.com/${myName}`;
数组
TypeScript 中定义数组的方式有两种。
第一种是元素类型后面接上 []
,表示由此类型元素组成的一个数组:
let arr: number[] = [1, 2, 3, 4];
// 如果在数组中加入其他元素会报错
第二种是使用数组泛型定义数组:
let arr1: any[] = [1, "2", 3, "4"];
// 这个数组中可以假如任意类型的元素
元组 Tuple
元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。
let arr2:[number, string, number] = [1,"2",3];
// 若果写成 [1,2,3] 会报错
元素是严格规定了数组的长度和每个位置的元素类型,并且在赋值时需要严格对应,否则会报错。
枚举
enum
类型是对JavaScript标准数据类型的一个补充。 像C#等其它语言一样,使用枚举类型可以为一组数值赋予友好的名字。
enum Color {Red, Green, Blue}
let c: Color = Color.Green;
默认情况下,从0
开始为元素编号。 你也可以手动地指定成员的数值。 例如,我们将上面的例子改成从 1
开始编号:
enum Color {Red = 1, Green, Blue}
let c: Color = Color.Green;
或者,全部都采用手动赋值:
enum Color {Red = 1, Green = 2, Blue = 4}
let c: Color = Color.Green;
枚举类型提供的一个便利是你可以由枚举的值得到它的名字。 例如,我们知道数值为2,但是不确定它映射到Color里的哪个名字,我们可以查找相应的名字:
enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];console.log(colorName); // 显示'Green'因为上面代码里它的值是2
任意值 any
代表任意类型的值。如果不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查。,那么就可以使用 any
类型来标记这些变量:
let a: any = 12;
a = "12";
let list: any[] = [1, true, "free"];
list[1] = 100;
空值 void
当一个数据没有任何类型时,通常用 void 标记,多用于函数返回值。
function sayName(): void {console.log(`My name is 编程三昧。`);
}
let aNull: void = null;
let aNull1: void = undefined;
void 类型只能被赋值为 null 或者 undefined。
null 和 undefined
TypeScript 中也有 null 和 undefined 两种类型,它们只能各自对应 null 值和 undefined 值。
let theNull: null = null;
let theUndefined: undefined = undefined;
这两个类型基本上没啥大的用处。
null 和 undefined 是否可赋值给 number 类型的变量,取决于编译配置文件中的 “–strictNullChecks” 选项是否关闭,一般是建议打开这个选项的。
Never
never
类型表示的是那些永不存在的值的类型。 例如, never
类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型; 变量也可能是 never
类型,当它们被永不为真的类型保护所约束时。
never
类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never
的子类型或可以赋值给never
类型(除了never
本身之外)。 即使 any
也不可以赋值给never
。
下面是一些返回never
类型的函数:
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {throw new Error(message);
}// 推断的返回值类型为never
function fail() {return error("Something failed");
}// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {while (true) {}
}
object
object 类型包含除了几种基本类型之外的所有类型。
let obj: object = [1,2,3];
let obj1: object = {name: "编程三昧"
};
let func: object = ()=>{console.log("编程三昧");
}
扩展
1、TypeScript 会根据你给变量的初始值判断默认类型。
let aNum = 12;
aNum = "number";
// Type 'string' is not assignable to type 'number'.
2、函数方法的参数和返回值都可以使用类型限制,保证传参和返回值的正确性。
function sum(a: number, b:number): number {return a + b;
}
sum(1, "3");
// Argument of type 'string' is not assignable to parameter of type 'number'.
总结
以上就是 TypeScript 中的基础数据类型介绍,总结起来就是:
- 在变量(函数的括号)后面添加冒号,后面跟上期望的类型,即可限制类型的前后一致性;
- 如果没有显式的添加类型限制,TypeScript 会根据初始值自动添加类型。
- ~
- 本文完,感谢阅读!
~
学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!
大家好,我是〖编程三昧〗的作者 隐逸王,我的公众号是『编程三昧』,欢迎关注,希望大家多多指教!
系统学习 TypeScript(三)——基础类型相关推荐
- 系统学习 TypeScript(五)——联合类型
前言 在初步学习了 TypeScript 的变量声明后,对它的静态类型检查功能简直是爱不释手,但同时也发现一个问题:在正常的开发中,一个变量的类型有时可能不仅仅只限于 number 或者 string ...
- 系统学习 TypeScript(一)——认识 TypeScript
前言 TypeScript 很流行,这是前端从业者众所周知的事. TypeScript 很好用,仁者见仁智者见智.但是,很多大型前端框架都使用 TypeScript 进行了重构. 为了不落伍,我也需要 ...
- 系统学习 TypeScript(四)——变量声明的初步学习
前言 认识了 TypeScript 中的基础类型,接下来当然是变量声明的相关学习了. 声明多维数组 假如有这么一个声明: let arr3: number[][][]; 想要知道 arr3 的具体类型 ...
- 学习TypeScrip1(基础类型)
视频教程小满TypeScript基础教程全集(完结)_哔哩哔哩_bilibili TS是JS的超集,所以JS基础的类型都包含在内 起步安装 npm install typescript -g 运行ts ...
- [读书笔记]C#学习笔记三: C#类型详解..
前言 这次分享的主要内容有五个, 分别是值类型和引用类型, 装箱与拆箱,常量与变量,运算符重载,static字段和static构造函数. 后期的分享会针对于C#2.0 3.0 4.0 等新特性进行. ...
- Java I/O系统学习系列三:I/O流的典型使用方式
尽管可以通过不同的方式组合IO流类,但我们可能也就只用到其中的几种组合.下面的例子可以作为典型的IO用法的基本参考.在这些示例中,异常处理都被简化为将异常传递给控制台,但是这只有在小型示例和工具中才适 ...
- Linux系统学习之 三:新手必须掌握的Linux命令3
内容预览 1.输入输出重定向 2.管道命令符 3.命令行的通配符 4.常用的转义符号 5.重要的环境变量 一.输入输出重定向 重定向技术的5种模式:1 标准覆盖输出重定向 2 标准追加输出重定向3 错 ...
- 系统学习 TypeScript(二)——开发流程和语法规则
前言 我们已经知道了 TypeScript 是什么,以及为什么要用 TypeScript,今天,我们就来学习怎么初步使用它. TypeScript 的使用流程 原始的 TypeScript 文件以 . ...
- 【TypeScript】---基础类型
目录 类型声明 语法: 类型: number boolean string any unknown void never object array tuple enum 类型断言 函数 数组 元组 T ...
最新文章
- 卷积:kernel size/padding/stride
- git merge 和 git rebase详解
- SDN/NFV运营商商业化部署
- Xftp使用教程——问答方式
- 【学习笔记】吴恩达机器学习 WEEK1
- Spark Worker源码
- C#算法设计排序篇之06-堆排序(附带动画演示程序)
- 【华为云技术分享】云小课 | WAF反爬虫“三板斧”:轻松应对网站恶意爬虫
- 来了!小米9发布时间确定:2月20日见 为你而战
- .net mvc html使用方法,C# ASP.NET MVC HtmlHelper用法汇总
- 测试keepalived备备模式
- java二次雷达编码地址
- 使用浏览器测试Webservers服务时出现提示“The test form is only available for requests from the local machine.”的解决办法
- excel表格末尾添加一行_Excel2007:给excel表格添加边框线
- matlab绘制收益率曲线并计算风险收益率VaR(Value At Risk)
- 生动形象解释虚数的意义
- java如何删除一本图书_javaEE项目网上书城后台(如何删除一本书并且有提示)...
- 白鹭引擎学习笔记(二)
- AMBA总线—APB总线协议详解
- isInterrupted() interrupt() interrupted() 方法的简单解释
热门文章
- 关于使用IDEA导入项目后依赖报错的解决方案
- 电脑系统怎么卸载驱动程序
- Win10启动项设置在哪里
- 苹果手机如何调节屏幕彩色(对于百度提供的方式行不通时此方法必有用)
- Linux:如何更新Ubuntu的数据源
- nfc和红外线的区别_红外,蓝牙,WiFi,NFC区别及优缺点
- web浏览器_微软低头,Chrome 一统浏览器!
- mysql jpa 不要自动建表_jpa无法自动创建数据库表
- kettle使用命令行的方式执行多个job_手把手教你实现xxl-job分布式任务调度平台搭建
- 自动化测试如何保持登录状态_自动化测试po模式是什么?自动化测试po分层如何实现?-附详细源码...