上一章TypeScript教程请查看:第一个TypeScript程序
TypeScript语言支持不同类型的值。它为JavaScript提供数据类型,以便将其转换为强类型的编程语言。JavaScript不支持数据类型,但是在TypeScript的帮助下,我们可以使用JavaScript中的数据类型特性。当面向对象的程序员希望在任何脚本语言或面向对象的编程语言中使用类型特性时,TypeScript扮演着重要的角色。在程序使用给定值之前,类型系统检查它们的有效性,它确保代码的行为符合预期。
TypeScript将数据类型作为可选的类型系统提供,我们可以将TypeScript数据类型分类如下。
文章图片
静态类型在类型系统上下文中,静态类型表示“在编译时”或“不运行程序”。在静态类型语言中,变量、参数和对象具有编译器在编译时知道的类型,编译器使用这些信息来执行类型检查。
静态类型可以进一步分为两个子类:
内置或原始类型TypeScript有五种内置的数据类型,如下所示。
文章图片
Number数字
与JavaScript一样,TypeScript中的所有数字都存储为浮点值。这些数值被视为数字数据类型。数字数据类型可用于表示整数和分数。TypeScript还支持二进制(以2为基数)、八进制(以8为基数)、十进制(以10为基数)和十六进制(以16为基数)文本。
使用语法:
let identifier: number = value;
例子:
let age: number = 45;
// number
let height: number = 0x56;
// hex
let weight: number = 0o160;
// octal
let time: number = 0b11001;
// binaryconsole.log(age);
console.log(height);
console.log(weight);
console.log(time);
String字符串我们将使用字符串数据类型来表示TypeScript中的文本。字符串类型处理文本数据,我们通过将字符串括在单引号或双引号中来在脚本中包含字符串。它还表示一个Unicode字符序列,它将表达式嵌入到$ {expr}的形式中。
语法:
let identifier: string = " ";
Or
let identifier: string = ' ';
【TypeScript数据类型 – TypeScript开发教程】例子:
let userName: string = "Oreja De Van Gogh";
let comp = "music";
// before ES6
let str1: string = userName + " loves " + comp;
// aflter ES6
let str2: string = `${userName} loves ${comp}`;
console.log(str1);
console.log(str2);
Boolean布尔类型
字符串和数值数据类型可以有无限个不同的值,而布尔数据类型只能有两个值。它们是“true”和“false”。布尔值是一个真值,它指定条件是否为真。
语法
let identifier: boolean = Boolean value;
例子
let isOK: boolean = false;
void空类型
void是不返回任何类型值的函数的返回类型。如果没有可用的数据类型,则使用它。类型为void的变量是没有用的,因为我们只能将undefined或null赋值给它们。未定义的数据类型表示未初始化的变量,而null表示值未定义的变量。
语法
let unusable: void = undefined;
例子1:
function helloUser(): void{
console.log("a welcome message!");
}
例子2
let num: void = undefined;
num = null;
num = 5415;
// Error
null类型
Null表示值未定义的变量,就像void一样,它本身并不是特别有用。Null只接受一个值,即Null。Null关键字用于在TypeScript中定义Null类型,但它并不有用,因为我们只能为它赋一个Null值。
例子
let num: number = null;
let bool: boolean = null;
let str: string = null;
undefined未定义类型未定义的基本类型表示TypeScript和JavaScript中所有未初始化的变量。它只有一个未定义的值,undefined关键字在TypeScript中定义了未定义的类型,但是它没有用处,因为我们只能为它赋一个未定义的值。
例子
let num: number = undefined;
let bool: boolean = undefined;
let str: string = undefined;
any类型
它是TypeScript中所有数据类型的“超类型”。它用于表示任何JavaScript值,它允许我们在编译期间选择是否进行类型检查。如果变量不能用任何基本数据类型表示,那么可以使用“any”数据类型声明它。当我们不知道值的类型(可能来自API或第三方库),并且希望跳过编译时的类型检查时,any类型都是非常有用的。
语法
let identifier: any = value;
例子1
let value: any = "Hola";
value = http://www.srcmini.com/55;
// OK
value = true // OK
例子2
function process(x: any, y: any){
return x + y;
}let result: any;
result = process("Hola ", "Any");
result = process(5, 10);
用户自定义的数据类型TypeScript支持以下用户定义的数据类型:
文章图片
数组array
数组是相同数据类型元素的集合。与JavaScript一样,TypeScript也允许我们使用值数组。数组有两种写法:
1. 使用[]后面元素的类型来表示该元素类型的数组:
var list: number[] = [1, 2, 4];
2. 第二种方法使用泛型数组类型
var list: Array<
number> = [1, 2, 4];
元组Tuple
Tuple是一种数据类型,它包含两组不同数据类型的值。它允许我们表示一个数组,其中已知的元素的类型是固定数量的,但它们是不同的。例如,如果我们想把一个值表示成一个数字和一个字符串的对,那么它可以写成:
// 声明元组
let a: [string, number];
// 初始化
a = ["hi", 8, "how", 5];
// OK
接口interface
接口是在我们的应用程序中充当契约的结构。它定义了要遵循的类的语法,意味着实现接口的类必须实现它的所有成员。它不能被实例化,但是可以被实现它的类引用。TypeScript编译器使用接口进行类型检查,也称为“动态类型”或“结构化子类型”。
例子
interface Calc {
subtract (first: number, second: number): any;
}let Calculator: Calc = {
subtract(first: number, second: number) {
return first - second;
}
}
类class
类用于创建可重用组件,并充当创建对象的模板。它是一个逻辑实体,存储变量和执行操作的函数。TypeScript从ES6获得对类的支持,它不同于接口内部有实现,而接口内部没有任何实现。
例子
class Student
{
RollNo: number;
Name: string;
constructor(_RollNo: number, Name: string)
{
this.RollNo = _rollNo;
this.Name = _name;
}
showDetails()
{
console.log(this.rollNo + " : " + this.name);
}
}
枚举enum类型
枚举定义一组命名常量,TypeScript提供基于字符串和基于数字的枚举。默认情况下,枚举从0开始给它们的元素编号,但是我们也可以通过手动将值设置为它的一个元素来改变这一点。TypeScript从ES6获得对枚举的支持。
例子
enum Color {
Red, Green, Blue
};
let c: Color;
ColorColor = Color.Green;
函数function类型
函数是组织程序的逻辑代码块。与JavaScript一样,TypeScript也可以用来创建函数,可以是命名函数,也可以是匿名函数。函数确保程序可读、可维护和可重用。函数声明具有函数的名称、返回类型和参数。
例子
// 以数字作为参数的命名函数类型和返回类型
function add(a: number, b: number): number {
return a + b;
}// 以number作为参数类型和返回类型的匿名函数
let sum = function (a: number, y: number): number {
return a + b;
};
泛型类型泛型用于创建可以处理多种数据类型而不是单一数据类型的组件。它允许创建可重用组件的方法。它确保了程序的灵活性以及长期的可扩展性。TypeScript使用泛型,类型变量< T>表示类型,泛型函数的类型与非泛型函数类似,首先列出类型参数,类似于函数声明。
例子
function identity<
T>(arg: T): T {
return arg;
}
let output1 = identity<
string>("myString");
let output2 = identity<
number>( 100 );
装饰器装饰器是一种特殊的数据类型,可以附加到类声明、方法、属性、访问器和参数。它提供了一种为类和函数添加注释和元编程语法的方法。它与“@”符号一起使用。
装饰器是一个实验性的特性,在将来的版本中可能会发生变化。为了支持decorator,我们必须在命令行或tsconfig.json中启用experimentalDecorators装饰器编译器选项。
例子
function f() {
console.log("f(): evaluated");
return function (target, propertyKey: string, descriptor: PropertyDescriptor) {
console.log("f(): called");
}
}class C {
@f()
method() {}
}
推荐阅读
- 编写第一个TypeScript程序 – TypeScript开发教程
- 安装TypeScript的两种方式 – TypeScript开发教程
- TypeScript组件解释 – TypeScript开发教程
- TypeScript的特征以及和JavaScript的区别 – TypeScript开发教程
- TypeScript入门介绍和版本 – TypeScript开发教程
- JavaScript使用回溯法解决整数分解问题
- JS如何实现二叉堆(JavaScript实现最小二叉堆和优先队列)
- JavaScript常用数据结构之线性表(数组和链表)
- JavaScript常用数据结构(栈(Stack)详解)