📅  最后修改于: 2023-12-03 15:35:24.737000             🧑  作者: Mango
TypeScript 是一种由微软开发的开源编程语言,它是 JavaScript 的超集,并添加了一些新的语言特性。其中一个最重要的特性就是类型。在 JavaScript 中,我们可以定义变量而不声明它的类型,但在 TypeScript 中,变量需要声明其类型。这样,我们可以在代码编写期间捕捉到很多错误,从而提高代码质量和可维护性。
在 TypeScript 中,我们可以使用 let
、const
、var
关键字来定义变量。相比于 JavaScript,TypeScript 还支持元组和枚举类型。
let
关键字用来声明一个块作用域的变量。它的值可以在同一作用域中进行更改。
let foo: string = 'hello world';
foo = 'hello TypeScript';
const
关键字用来声明一个常量。与 let
不同的是,const
声明的变量的值在声明后就不能被修改了。
const foo: string = 'hello world';
foo = 'hello TypeScript'; // 错误,这里会报错
var
关键字也用来声明变量,但与 let
不同的是,var
声明的变量是全局作用域或函数作用域的。在 TypeScript 中,我们不推荐使用它来声明变量。
var foo: string = 'hello world';
function test() {
var foo: string = 'hello TypeScript';
console.log(foo);
}
test(); // 输出 'hello TypeScript'
console.log(foo); // 输出 'hello world'
在 TypeScript 中,除了可以定义变量的类型,还可以定义变量的值。当我们讨论一个变量的类型时,使用 :
来表示;当我们讨论一个变量的值时,使用 =
运算符来表示。
let foo: string = 'hello world'; // 定义一个类型为 string 的变量 foo,并赋值为 'hello world'
let bar: number; // 定义一个类型为 number 的变量 bar,没有赋值
bar = 42; // 给 bar 赋值为 42
在 TypeScript 中,如果我们没有显式地声明变量的类型,编译器会根据变量的初始值来推断它的类型。
let foo = 'hello world'; // TypeScript 会自动将 foo 推断为 string 类型
let bar; // TypeScript 会将 bar 推断为 any 类型,因为没有给它赋值
let baz = []; // TypeScript 会将 baz 推断为 any[] 类型
元组是 TypeScript 中新增的一个类型,它可以包含多个不同类型的元素,并且元素的数量是固定的。
let tuple: [string, boolean, number] = ['foo', true, 42];
枚举也是 TypeScript 中的一个类型,它用来定义命名常量的集合。在枚举中,每个常量都有一个与之关联的数字值。
enum Color { Red, Green, Blue }
let color: Color = Color.Green; // 1
TypeScript 的变量类型是其最重要的特性之一。我们可以使用 let
、const
、var
关键字来定义变量,还可以使用类型推断来简化代码。此外,TypeScript 还支持元组和枚举类型,可以提高代码的可读性和可维护性。