共计 3513 个字符,预计需要花费 9 分钟才能阅读完成。
本节咱们学习 TypeScript
语言中的数据类型,有:数字类型、字符串类型、布尔值、数组、元组等等。TypeScript
反对与 JavaScript
简直雷同的数据类型,此外还提供了实用的枚举类型不便咱们应用。
数字类型
与 JavaScript
中一样,TypeScript
中的所有数字都是浮点数。这些浮点数的类型为 number
类型。number
类型除了反对十进制和十六进制字面量,还反对 ECMAScript 2015
中引入的二进制和八进制字面量。
示例:
申明数字类型的变量,能够是二进制、十进制、十六进制、八进制示意模式:
let n1: number = 8; // 十进制 | |
let n2: number = 0xf00d; // 十六进制 | |
let n3: number = 101010; // 二进制 | |
let n4: number = 0o633; // 八进制 | |
console.log(n1, n2, n3, n4); |
编译成 JavaScript
代码:
var n1 = 8; // 十进制 | |
var n2 = 0xf00d; // 十六进制 | |
var n3 = 101010; // 二进制 | |
var n4 = 411; // 八进制 | |
console.log(n1, n2, n3, n4); | |
// 8 61453 101010 411 |
什么是十进制、二进制、八进制、十六进制:
- 十进制: 十进制数就是用
0
、1
、2
….9
,这十个数来示意的数。 - 二进制: 二进制数据是用
0
和1
两个数码来示意的数。它的基数为2
,进位规定是“逢二进一”,借位规定是“借一当二”。 - 八进制: 八进制是一种以
8
为基数的计数法,采纳0
,1
,2
,3
,4
,5
,6
,7
八个数字,逢八进1
。 - 十六进制: 十六进制是计算机中数据的一种示意办法。同咱们日常中的十进制表示法不一样。个别用数字
0
到9
和字母A
到F
(或 a~f)示意,这些数字和字母任意组合用来示意0~15
之间的某个字。其中A~F
示意10~15
,这些称作十六进制数。
布尔类型
布尔类型 boolean
示意逻辑值,只有 true
和 false
这两个值。
示例:
例如申明两个布尔类型的变量,并输入:
const b1: boolean = true; | |
const b2: boolean = false; | |
console.log(b1, b2); |
将上述代码编译成 JavaScript 代码:
var b1 = true; | |
var b2 = false; | |
console.log(b1, b2); |
输入:
true false
字符串类型
字符串类型 string
用于示意文本数据类型,与 JavaScript
中一样,能够应用单引号 '
或双引号 "
来示意字符串。
示例:
申明一个字符串类型的变量:
let str: string = "侠课岛";console.log(str);
输入:
侠课岛
数组类型
数组类型有两种示意办法,第一种在元素类型后接上中括号 []
,示意此类型元素组成的一个数组。
示例:
例如申明一个由数字类型组成的数组 num
,和一个由字符串类型组成的数组 character
:
// 在元素类型前面加上 [],定义数字类型数组 | |
let num: number[] = [1, 2, 3]; | |
console.log(num); | |
// 定义字符串类型数组 | |
let character: string[] = ['a', 'b', 'c']; | |
console.log(character); |
第二种形式是应用数组泛型,格局为 Array< 元素类型 >
。
示例:
例如申明一个数字类型的数组:
// 应用数组泛型 | |
let arr: Array<number> = [1, 2, 3]; | |
console.log(arr2); |
将下面的代码都编译成 JavaScript
代码:
// 应用数组泛型 | |
var arr = [1, 2, 3]; | |
console.log(arr2); |
输入:
[1, 2, 3]
元组类型
元组示意已知元素数量和类型的数组,元组中的元素能够由是不同类型,然而要留神,所定义类型的个数和程序必须与元素值一一对应,少一个都不行。
示例:
申明一个元组,元组中的第一个元素为字符串类型,第二个元素为数字类型:
// 类型和值必须一一对应 | |
let tuple: [string, number] = ['小飞侠', 18]; | |
console.log(tuple); | |
console.log(tuple[0]); |
编译成 JavaScript
代码:
// 类型和值必须一一对应 | |
var tuple = ['小飞侠', 18]; | |
console.log(tuple); | |
console.log(tuple[0]); |
输入:
['小飞侠', 18] | |
小飞侠 |
枚举类型
枚举类型 enum
用于定义数值汇合。
示例:
申明一个枚举类型的变量 Fruits
,这个变量中有三个不同的值:
enum Fruits {watermelon, Apple, Litchi}; | |
console.log(Fruits); |
将代码编译成 JavaScript
代码:
var Fruits; | |
(function (Fruits) {Fruits[Fruits["watermelon"] = 0] = "watermelon"; | |
Fruits[Fruits["Apple"] = 1] = "Apple"; | |
Fruits[Fruits["Litchi"] = 2] = "Litchi"; | |
})(Fruits || (Fruits = {})); | |
; | |
console.log(Fruits); |
执行代码后输入后果为:
{ | |
'0': 'watermelon', | |
'1': 'Apple', | |
'2': 'Litchi', | |
watermelon: 0, | |
Apple: 1, | |
Litchi: 2 | |
} |
any 任意类型
任意值是 TypeScript
针对编程时类型不明确的变量应用的一种数据类型,申明为 any
的变量能够赋予任意类型的值。
示例:
例如申明一个 any
类型的变量 unknown
:
let unknown: any; | |
unknown = 7; // 数字类型 | |
console.log(unknown); | |
unknown = 'xkd'; // 字符串类型 | |
console.log(unknown); | |
unknown = false; // 布尔类型 | |
console.log(unknown); |
将上述代码编译成 JavaScript
代码:
var unknown; | |
unknown = 7; // 数字类型 | |
console.log(unknown); | |
unknown = 'xkd'; // 字符串类型 | |
console.log(unknown); | |
unknown = false; // 布尔类型 | |
console.log(unknown); |
输入:
7 | |
xkd | |
false |
void 类型
在 Java
等语言中,如果一个办法没有返回值,则默认该办法返回值类型为 void
类型。
在 JavaScript
中并没有此类型,这个 TypeScript
新增的类型。
void
可用于标识办法返回值的类型,示意该办法没有返回值。
示例:
如果定义函数时,没有返回值,倡议在函数名前面接一个 void
。例如上面这个函数 show()
,咱们没有给它指定返回值,所以指定这个函数的返回值为 void
类型:
function show(): void {console.log("你好,侠课岛!"); | |
} | |
// 调用函数 | |
show(); |
编译成 JavaScript
代码:
function show() {console.log("你好,侠课岛!"); | |
} | |
// 调用函数 | |
show(); |
输入:
你好,侠课岛!
Null 类型和 Undefined 类型
null
类型和 undefined
类型与 JavaScript
中的对应类型十分相似,这两个类型别离是 Null
类型和 Undefined
的间接量,也是惟一的值。
示例:
var n = null; | |
var u = undefined; | |
console.log(n, u); // null undefined |
Never 类型
Never
类型示意的是那些永不存在的值的类型。
示例:
在申明变量时,咱们能够将变量申明为 never
类型:
let a: never;
never
类型是任何类型的子类型,也能够赋值给任何类型。
示例:
let a: never; | |
let b: number; | |
let c: string; | |
// never 类型能够赋值给 never 类型 | |
a = (()=>{throw new Error('xkd'); | |
})(); | |
// never 类型能够赋值给 number 类型 | |
b = (()=>{throw new Error('xkd'); | |
})(); | |
// never 类型能够赋值给 string 类型 | |
c = (()=>{throw new Error('xkd'); | |
})(); |
然而没有类型是 never
的子类型或能够赋值给 never
类型,即便 any
也不能够赋值给 never
。
示例:
例如将数字类型的值赋值给 never
类型:
let a: never; | |
a = 100; | |
// 输入:Type '100' is not assignable to type 'never' |
链接:https://www.9xkd.com/