TypeScript 第十节:对象
2023-12-13 19:22:51
?一、对象
TypeScript 中的对象可以包含属性和方法。对象的属性可以是简单值、对象、数组或函数。对象可以使用类或接口进行定义。
1、示例
以下是一个简单的 TypeScript 对象示例:
let person = {
name: "John",
age: 30,
hobbies: ["reading", "hiking"],
address: {
street: "123 Main St",
city: "Anytown",
state: "CA"
},
sayHello: function() {
console.log("Hello, my name is " + this.name + "!");
}
};
在此示例中,
person
对象包含了name
、age
、hobbies
、address
和sayHello
属性。其中,name
和age
是简单值,hobbies
是一个字符串数组,address
是一个嵌套的对象,sayHello
是一个函数。
?
可以使用如下方式访问对象属性和方法:
console.log(person.name); // 输出:John
person.sayHello(); // 输出:Hello, my name is John!
要在对象中添加方法,可以通过以下方式
person.sayHi = function () {
console.log("Hi, my name is " + person.name + "!");
};
person.sayHi(); // 输出:Hi, my name is John!
?
?2、鸭子类型 (Duck Typing)
鸭子类型(英语:duck typing)是动态类型的一种风格,是多态(polymorphism)的一种形式。
在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由"当前方法和属性的集合"决定。
TypeScript 是一种静态类型语言,但它也支持鸭子类型。
鸭子类型是指,如果一只鸟走起来像鸭子,叫起来像鸭子,那么它就可以被视为一只鸭子。
在 TypeScript 中,如果两个类型具有相同的属性和方法,那么它们就可以视为同一种类型。
?
例如,假设我们有两个接口:
interface Duck {
quack(): void;
}
interface Person {
quack(): void;
}
这两个接口都有一个
quack()
方法,所以它们可以被视为相同的类型。因此,我们可以将一个实现了quack()
方法的Person
对象传递给期望一个Duck
对象的函数中:
function takeDuck(duck: Duck) {
duck.quack();
}
const person: Person = {
quack: () => console.log('Quack!')
};
takeDuck(person); // 输出 Quack!
因为
Person
接口和Duck
接口都定义了quack()
方法,所以我们可以将Person
对象传递给takeDuck()
函数中。这就是鸭子类型的体现,即两个不同的类型可以被视为相同的类型,只要它们具有相同的属性和方法。
文章来源:https://blog.csdn.net/Sunshine_Jian/article/details/134940916
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!