TypeScript - 类型推断:初学者指南
你好啊,未来的编程巨星!今天,我们将踏上一段激动人心的旅程,探索TypeScript的世界,并了解其最酷的功能之一:类型推断。如果你是编程新手,不用担心;我会成为你的友好向导,我们会一步步来。在这个教程结束时,你会惊叹于TypeScript有多么智能!
什么是类型推断?
在我们深入之前,让我们先了解一下类型推断的含义。想象你有一个神奇的朋友,他只需看着你就能猜出你在想什么。TypeScript对你的代码做的事情有点类似。它查看你的代码,试图推断出变量的类型,而无需你明确告诉它。酷不酷?
现在,让我们探索TypeScript使用其神奇推断能力的不同方式!
变量或成员初始化
基础知识
当你创建一个变量并立即给它一个值时,TypeScript可以推断出该变量应该是什么类型。让我们看一些例子:
let myName = "Alice";
let myAge = 25;
let isStudent = true;
在这段代码中,TypeScript推断出:
-
myName
是一个string
-
myAge
是一个number
-
isStudent
是一个boolean
你不需要写 let myName: string = "Alice";
因为TypeScript足够智能,可以推断出来!
更复杂的例子
TypeScript也可以处理更复杂的类型:
let myFavoriteNumbers = [1, 2, 3, 4, 5];
let myPet = { name: "Fluffy", type: "Cat", age: 3 };
在这里,TypeScript推断出:
-
myFavoriteNumbers
是一个数字数组 (number[]
) -
myPet
是一个具有特定属性的对象(TypeScript创建了我们所说的“对象字面量类型”)
函数默认参数
TypeScript还可以从函数的默认参数中推断类型。让我们看一个例子:
function greet(name = "Guest") {
console.log(`Hello, ${name}!`);
}
在这个函数中,TypeScript推断出 name
是一个 string
,因为默认值是一个字符串。
你可以以不同的方式调用这个函数:
greet(); // 输出:Hello, Guest!
greet("Alice"); // 输出:Hello, Alice!
函数返回类型
TypeScript足够聪明,可以根据函数返回的内容推断出函数的返回类型。让我们看一些例子:
function add(a: number, b: number) {
return a + b;
}
function isEven(num: number) {
return num % 2 === 0;
}
TypeScript推断出:
-
add
返回一个number
-
isEven
返回一个boolean
你不需要写 function add(a: number, b: number): number
因为TypeScript可以推断出来!
最好的公共类型:联合类型
有时,TypeScript需要从多个表达式中推断类型。在这些情况下,它使用我们所说的“最佳公共类型”算法。让我们看一个例子:
let mixedArray = [1, "two", 3, "four", 5];
在这里,TypeScript推断出 mixedArray
的类型是 (string | number)[]
。这意味着它是一个可以包含字符串和数字的数组。
上下文类型
上下文类型是TypeScript使用代码上下文来推断类型。这在处理回调函数和函数参数时特别有用。让我们看一个例子:
let numbers = [1, 2, 3, 4, 5];
numbers.forEach(function(num) {
console.log(num.toFixed(2));
});
在这个例子中,TypeScript知道在数字数组上使用 forEach
会将数字传递给回调函数。所以它推断出 num
是一个数字,这就是为什么你可以在不出现任何错误的情况下使用 toFixed()
。
结论
好了,各位!我们已经穿越了TypeScript类型推断的神奇世界。从简单的变量赋值到复杂的函数返回类型和上下文类型,TypeScript一直在努力理解你的代码,让生活变得更简单。
记住,类型推断就像有一个智能助手,帮助你编写更干净、更无错误的代码。它并不完美,有时你可能需要手动给出显式的类型注解,但大多数时候,它会为你提供支持!
继续练习,继续编程,很快你将成为TypeScript的专家!快乐编程,愿类型永远站在你这边!
Credits: Image by storyset