TypeScript 语言支持不同类型的值。 它提供将 JavaScript 转换为强类型编程语言的数据类型。 JavaScript 不支持数据类型,但是通过 TypeScript,我们可以使用 JavaScript 中的数据类型功能。 当面向对象程序员想要使用任何脚本语言或面向对象编程语言中的类型功能时,TypeScript 发挥着重要作用。 类型系统在程序使用给定值之前检查其有效性。 它确保代码的行为符合预期。
TypeScript 为数据类型提供了一个可选的类型系统。 我们可以对 TypeScript 数据类型进行如下分类。
1.静态型
在类型系统的上下文中,静态类型意味着“在编译时”或“在运行程序之前”。 在静态类型语言中,变量、参数和对象具有编译器在编译时知道的类型。 编译器使用此信息来执行类型检测。
静态类型可以进一步分为两个子类:
TypeScript 有五种外部数据类型,如下所示。
与 JavaScript 一样,所有数字在 TypeScript 中都存储为浮点值。 该数值被视为数字数据类型。 数字数据类型可用于表示整数和分数。 TypeScript 还支持二进制补码(以 2 为基数)、八进制补码(以 8 为基数)、十进制补码(以 10 为基数)和十六进制补码(以 16 为基数)文字。
句型:
let identifier: number = value;
例子:-
let first: number = 12.0; // number
let second: number = 0x37CF; // hexadecimal
let third: number = 0o377 ; // octal
let fourth: number = 0b111001; // binary
console.log(first); // 123
console.log(second); // 14287
console.log(third); // 255
console.log(fourth); // 57
细绳
我们将使用字符串数据类型来表示 TypeScript 中的文本。 字符串类型用于处理文本数据。 我们通过用单冒号或双冒号将字符串文字包含在脚本中。 它还表示 Unicode 字符序列。 您可以使用表达式 ${expr} 来嵌入它。
句型
let identifier: string = " ";
Or
let identifier: string = ' ';
例子
let empName: string = "Rohan";
let empDept: string = "IT";
// Before-ES6
let output1: string = employeeName + " works in the " + employeeDept + " department.";
// After-ES6
let output2: string = `{empName} works in the{empDept} department.`;
console.log(output1);//Rohan works in the IT department.
console.log(output2);//Rohan works in the IT department.
字符串和数字数据类型可以有无限数量的不同值,而布尔数据类型只能有两个值。 它们是“真”和“假”。 布尔值是指定条件是否为真的真值。
句型
let identifier: Boolean = Boolean value;
例子
let isDone: boolean = false;
void 是不返回任何类型的函数的返回类型。 当没有可用的数据类型时使用它。 void 类型的变量是没有用的,因为我们只能将它们的形参设置为 undefined 或 null。 未定义的数据类型表示未初始化的变量,而 null 表示其值未定义的变量。
句型
let unusable: void = undefined;
例子
1. function helloUser(): void {
alert("This is a welcome message");
}
2. let tempNum: void = undefined;
tempNum = null;
tempNum = 123; //Error
无效的
Null 表示其值未定义的变量。 与 void 一样,它本身并不是特别有用。 Null 只接受一个值,null。 Null 关键字用于在 TypeScript 中定义 Null 类型,但它并不实用,因为我们只能为其分配 null 值。
例子
let num: number = null;
let bool: boolean = null;
let str: string = null;
不明确的
未定义的原始类型表示 TypeScript 和 JavaScript 中所有未初始化的变量。 它只有一个值,未定义。 undefined 关键字定义了 TypeScript 中的未定义类型,但它并不实用,因为我们只能为其分配未定义的值。
例子
let num: number = undefined;
let bool: boolean = undefined;
let str: string = undefined;
任何类型
它是 TypeScript 中所有数据类型的“超类型”。 它用于表示任何 JavaScript 值。 它允许我们在编译期间选择加入或退出类型检查。 如果变量难以表示为任何基本数据类型,则可以使用“Any”数据类型来声明它。 当我们不知道值的类型(可能来自 API 或第三方库),但我们想跳过编译时类型检查时,Any 类型特别有用。
句型
let identifier: any = value;
例子
1. let val: any = 'Hi';
val = 555; // OK
val = true; // OK
2. function ProcessData(x: any, y: any) {
return x + y;
}
let result: any;
result = ProcessData("Hello ", "Any!"); //Hello Any!
result = ProcessData(2, 3); //5
用户定义的数据类型
TypeScript 支持以下用户定义的数据类型:
字段是相同数据类型的元素的集合。 与 JavaScript 一样,TypeScript 也允许我们使用值字段。 链表可以用两种方式编写:
使用元素类型后跟 [] 来指示该元素类型的字段:
var list: number[] = [1, 3, 5];
第二种方法使用子类字段类型:
var list: Array = [1, 3, 5];
元组是一种数据类型,包含两个不同数据类型的值的集合。 它允许我们表示一个由固定数量的元素组成的字段,这些元素的类型已知,但不相同。 例如typescript中类型转换,如果我们想将一个值表示为一个数字和一个字符串对typescript中类型转换,我们可以将其编译为:
// 声明一个元组
let a: [string, number];
// 初始化它
a = ["hi", 8, "how", 5]; // OK
杰克
套接字是我们应用程序中充当契约的结构。 它定义了类必须遵守的模式,这意味着实现套接字的类必须实现其所有成员。 它不能被实例化,但可以被实现它的类引用。 TypeScript 编译器使用套接字进行类型检查,这通常称为“鸭子类型”或“结构子类型”。
例子
interface Calc {
subtract(first: number, second: number): any;
}
let Calculator: Calc = {
subtract(first: number, second: number) {
return first - second;
}
}
类用于创建可重用组件并充当创建对象的模板。 它是一个逻辑实体,其中存储变量和函数以执行操作。 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);
}
}
枚举定义了一组命名常量。 TypeScript 提供基于字符串和数字的枚举。 默认情况下,枚举从 0 开始对其元素进行编号,但我们也可以通过自动将值设置为其元素之一来修改这一点。 TypeScript 从 ES6 开始支持枚举。
例子
enum Color {
Red, Green, Blue
};
let c: Color;
Color = Color.Green;
功能
函数是组织程序的逻辑代码块。 与 JavaScript 一样,TypeScript 也可用于创建函数,无论是命名函数还是匿名函数。 函数确保我们的程序可读、可维护和可重用。 函数声明具有函数名称、返回类型和参数。
例子
// 具有数字参数类型和返回类型的命名函数
function add(a: number, b: number): number {
return a + b;
}
// 具有数字参数类型和返回类型的匿名函数
let sum = function (a: number, y: number): number {
return a + b;
};
2. 子类
子类化用于创建可以处理多种数据类型而不是单一类型的组件。 它提供了一种创建可重用组件的方法。 它确保该计划全年灵活且可扩展。 TypeScript 使用类型变量来表示类型库。 泛型函数与非泛型函数具有相同的类型,首先列出类型参数,类似于函数声明。
例子
function identity(arg: T): T {
return arg;
}
let output1 = identity("myString");
let output2 = identity( 100 );
3. 装饰器
装饰器是一种特殊的数据类型,可以附加到类声明、方法、属性、访问器和参数。 它提供了一种向类和函数添加注释和元编程语法的形式。 使用“@”符号。
该装饰器是一项实验性功能,可能会在未来版本中进行修改。 要启用对装饰器的支持,我们必须在命令行或 tsconfig.json 中启用 ExperimentalDecorators 编译器选项。
例子
function f() {
console.log("f(): evaluated");
return function (target, propertyKey: string, descriptor: PropertyDescriptor) {
console.log("f(): called");
}
}
class C {
@f()
method() {}
}