TypeScript - 对象:初学者指南

你好,未来的编程超级巨星!今天,我们将踏上一段激动人心的旅程,探索TypeScript对象的世界。如果你之前从未编写过代码,也不用担心——我会成为你的友好向导,我们会一步一步地进行。在本教程结束时,你将能够自信地像专业人士一样处理对象!

TypeScript - Objects

对象是什么?

在我们深入TypeScript的具体内容之前,让我们先来谈谈编程中的对象是什么。想象你有一个背包。这个背包可以装各种物品,每个物品都有其自己的特征。在编程中,对象就像那个背包——它是一个容器,可以包含不同的相关信息。

语法:如何在TypeScript中创建对象

让我们从基础开始。在TypeScript中,我们可以使用所谓的“对象字面量表示法”来创建对象。这个术语听起来很高大上,但实际上非常简单。以下是一个例子:

let myBackpack = {
color: "blue",
capacity: 20,
isWaterproof: true
};

在这个例子中,myBackpack是我们的对象。它有三个属性:colorcapacityisWaterproof。每个属性都分配了一个值。

类型注解:告诉TypeScript我们期望的对象

TypeScript的一个很酷的功能是我们可以确切地告诉它我们期望对象包含哪些类型的数据。这被称为“类型注解”。让我们增强我们的背包示例:

let myBackpack: {
color: string;
capacity: number;
isWaterproof: boolean;
} = {
color: "blue",
capacity: 20,
isWaterproof: true
};

在这里,我们告诉TypeScript,color应该始终是字符串,capacity应该始终是数字,isWaterproof应该始终是布尔值。这有助于及早捕获错误,使我们的代码更可靠。

对象字面量表示法:更深入的了解

我们已经看到了对象字面量表示法的作用,但让我们进一步分解它。语法遵循以下模式:

let objectName = {
property1: value1,
property2: value2,
// ...等等
};

每个属性都通过逗号分隔,整个对象被大括号{}包围。这就像是将物品打包进我们的背包,每个物品都有一个名称(属性)和描述(值)。

TypeScript类型模板:可重用对象类型

有时,我们希望创建具有相同结构的多个对象。这时TypeScript的类型模板就派上用场了。我们可以定义一次类型并重用它:

type Backpack = {
color: string;
capacity: number;
isWaterproof: boolean;
};

let myBackpack: Backpack = {
color: "blue",
capacity: 20,
isWaterproof: true
};

let friendsBackpack: Backpack = {
color: "red",
capacity: 15,
isWaterproof: false
};

这个Backpack类型就像一个蓝图,确保任何Backpack类型的对象都具有正确的结构。

对象作为函数参数:传递我们的背包

对象可以作为函数参数传递,允许我们处理复杂的数据结构。以下是一个例子:

function describeBackpack(backpack: Backpack): string {
return `这个${backpack.color}背包的容量为${backpack.capacity}升,并且是${backpack.isWaterproof ? "防水" : "不防水"}.`;
}

console.log(describeBackpack(myBackpack));
// 输出: 这个blue背包的容量为20升,并且是防水.

在这个函数中,我们传递我们的Backpack对象并使用其属性来创建描述。

匿名对象:没有名称的背包

有时,我们需要在不需要将其分配给变量的情况下即时创建对象。这些被称为匿名对象:

function printBackpackColor(backpack: { color: string }): void {
console.log(`背包的颜色是${backpack.color}.`);
}

printBackpackColor({ color: "绿色" });
// 输出: 背包的颜色是绿色.

在这里,我们直接在函数调用中创建了一个对象。就像在不实际拥有背包的情况下向某人描述背包。

鸭子类型:如果它看起来像鸭子...

TypeScript使用了一个称为“鸭子类型”的概念。这个想法是:如果它看起来像鸭子并且叫声像鸭子,那么它很可能就是鸭子。在TypeScript的术语中,这意味着对象的外观比其显式类型更重要:

interface Bag {
color: string;
carry(): void;
}

let myBackpack = {
color: "purple",
capacity: 25,
carry: function() { console.log("背着背包"); }
};

function useBag(bag: Bag) {
console.log(`使用一个${bag.color}包`);
bag.carry();
}

useBag(myBackpack); // 这可以工作!

尽管myBackpack没有明确声明为Bag类型,但它拥有Bag应该有的所有属性和方法,所以TypeScript允许它。

结束我们的背包冒险

恭喜你!你刚刚用知识装备了你的第一个TypeScript对象背包。记住,对象在编程中非常强大——它们允许我们将相关的数据和方法组合在一起,就像一个真正的背包将你的所有徒步装备保存在一个地方一样。

在你继续编程之旅时,你会发现对象无处不在。它们是构建复杂应用程序的基石,从简单的待办事项列表到高级的Web应用程序。继续练习,很快你就能轻松创建和操作对象!

以下是我们在本教程中涵盖的方法的快速参考表:

方法 描述
对象字面量表示法 使用{}语法创建对象
类型注解 指定对象的结构
类型模板 创建可重用的对象类型
对象作为函数参数 将对象传递给函数
匿名对象 在不将其分配给变量的情况下创建对象
鸭子类型 基于对象形状的类型检查

快乐编程,愿你的TypeScript对象总是没有错误,并且充满激动人心的属性!

Credits: Image by storyset