对TS里接口、extends和类的理解

这篇具有很好参考价值的文章主要介绍了对TS里接口、extends和类的理解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

对TS里接口和类的理解

.

前几天一个月薪35k的兄弟,给我推了一个人工智能学习网站,看了一段时间挺有意思的。包括语音识别、机器翻译等从基础到实战都有,很详细,分享给大家。大家及时保存,说不定啥时候就没了。

.

接口

  • 需求: 创建人的对象, 需要对人的属性进行一定的约束

  • 下面通过一个简单示例来观察接口是如何工作的:

/* 
在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型
接口: 是对象的状态(属性)和行为(方法)的抽象(描述)
接口类型的对象
    多了或者少了属性是不允许的
    可选属性: ?
    只读属性: readonly
*/

/* 
需求: 创建人的对象, 需要对人的属性进行一定的约束
  id是number类型, 必须有, 只读的
  name是string类型, 必须有
  age是number类型, 必须有
  sex是string类型, 可以没有
*/

// 定义人的接口
interface IPerson {
  id: number
  name: string
  age: number
  sex: string
}

const person1: IPerson = {
  id: 1,
  name: 'tom',
  age: 20,
  sex: '男'
}
  • 应用
  • 定义一个Person 接口,它来描述一个拥有 firstName 和 lastName 字段的对象,这两个元素的值均为string类型。(对函数 greeterinterface 的参数person对象的元素类型进行了限制。)
interface Person {
    firstName: string;
    lastName: string;
}

const greeterinterface = (person: Person) => {
    return "Hello, " + person.firstName + " " + person.lastName;
}

let user = { firstName: "Jane", lastName: "User" };

console.log(greeterinterface(user))

  • 在项目里使用,例如调一个接口你需要传一个object给后端,这个object的元素有name,age,height,我们可以通过接口来对object值统一进行一个限制,name必须是string,age和height必须是number,否则就报错,这样会使代码更加严谨。

extends 关键字

在 TypeScript 中,通过 extends 关键字可以实现接口的继承。即用一个接口来扩展另一个接口的成员。这样可以避免重复定义或者让接口更加灵活。

interface Shape {
  name: string;
  area(): number;
}

interface Circle extends Shape {
  radius: number;
}

class MyCircle implements Circle {
  name = "My Circle";
  radius = 10;
  area() {
    return Math.PI * Math.pow(this.radius, 2);
  }
}

const myCircle = new MyCircle();
console.log(myCircle.name); // "My Circle"
console.log(myCircle.area()); // 314.1592653589793

在上述代码中,定义了两个接口Shape和Circle。

接口Shape定义了name和area两个属性。

接口Circle继承了Shape接口(Circle也拥有了来自Shape接口的两个属性),并增加了radius属性

这就是 extends的使用,用于继承,并且在继承属性的基础上又新增了自己的属性

接下来,通过class关键字定义了一个MyCircle类,这个类通过接口继承,实现了接口的组合和复用。

  • 在 TypeScript 中,类是面向对象编程的基础,它是一种抽象和封装了数据和行为的结构。类具有属性和方法,通常用于创建对象

  • 下面是一个简单的 TypeScript 类的示例:

class Person {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  sayHello() {
    console.log(`Hello, my name is ${this.name} and I am ${this.age} years old.`);
  }
}

const person = new Person("Tom", 18);
person.sayHello();

上面的代码中,定义了一个 Person 类,其中包括 name 和 age 两个属性,以及 sayHello 方法。在 constructor 构造函数中,通过 this 关键字来初始化 name 和 age 两个属性。sayHello 方法用于输出 Person 对象的信息。

在最后的代码中,创建了一个名为 person 的 Person 对象,调用其 sayHello 方法,输出 Hello, my name is Tom and I am 18 years old.。文章来源地址https://www.toymoban.com/news/detail-493375.html

到了这里,关于对TS里接口、extends和类的理解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python 中多态性的示例和类的继承多态性

    单词 \\\"多态\\\" 意味着 \\\"多种形式\\\",在编程中,它指的是具有相同名称的方法/函数/操作符,可以在许多不同的对象或类上执行。 一个示例是 Python 中的 len() 函数,它可以用于不同的对象。 对于字符串,len() 返回字符的数量: 示例 对于元组,len() 返回元组中项的数量: 示例 对

    2024年02月08日
    浏览(27)
  • 【编码狂想】指针航行,链表魔法,解锁结构体和类的编程幻境

     🌈个人主页: Sarapines Programmer  🔥 系列专栏: 本期文章收录在《C语言闯关笔记》,大家有兴趣可以浏览和关注,后面将会有更多精彩内容!  ⏰翰墨致赠:文墨扬长风,情随碧波舞。江山孕雄心滚滚,志立云霄梦遨游。 ​  🎉欢迎大家关注🔍点赞👍收藏⭐️留言📝

    2024年02月03日
    浏览(30)
  • .NET高级面试指南专题二十六【适配器模式介绍,用于将一个类的接口转换成客户端所期待的另一个接口】

    适配器模式是一种结构型设计模式,用于将一个类的接口转换成客户端所期待的另一个接口,使得原本由于接口不兼容而不能在一起工作的类能够协同工作。这种模式通常用于软件系统的升级和重构中,可以使得原有的代码能够与新的接口相兼容,同时不改变原有代码的情况

    2024年04月22日
    浏览(35)
  • 【Spring底层原理高级进阶】轻松掌握 Spring MVC 的拦截器机制:深入理解 HandlerInterceptor 接口和其实现类的用法

     🎉🎉欢迎光临🎉🎉 🏅我是苏泽,一位对技术充满热情的探索者和分享者。🚀🚀 🌟特别推荐给大家我的最新专栏 《Spring 狂野之旅:底层原理高级进阶》 🚀 本专栏纯属为爱发电永久免费!!! 这是苏泽的个人主页可以看到我其他的内容哦👇👇 努力的苏泽 http://suze

    2024年02月20日
    浏览(42)
  • 【Java】一个简单的接口例子(帮助理解接口+多态)

    要求: 请实现笔记本电脑使用USB 鼠标、 USB 键盘的例子 1. USB 接口:包含打开设备、关闭设备功能 2. 笔记本类:包含开机功能、关机功能、使用 USB 设备功能 3. 鼠标类:实现 USB 接口,并具备点击功能 4. 键盘类:实现 USB 接口,并具备输入功能 (不需要具体实现,给出框架即

    2024年02月16日
    浏览(33)
  • 认识TypeScript 中的接口和类

         🎬 江城开朗的豌豆 :个人主页  🔥 个人专栏  :《 VUE 》 《 javaScript 》  📝  个人网站  :《 江城开朗的豌豆🫛 》  ⛺️ 生活的理想,就是为了理想的生活 ! 目录 接口 类 江城开朗的豌豆 在 TypeScript 中,接口(Interfaces)和类(Classes)是实现面向对象编程(O

    2024年02月21日
    浏览(25)
  • C#学习系列之密闭类、接口、结构和类

    基础学习 类似string这种不想再继续继承和修改下去,使用sealed声明。 派生类中用sealed和override,无法继续重写。 接口就是指定一组函数成员,而不实现他们的引用类型。需要使用interface来声明,同时成员默认为public,不能加任何访问修饰符。 只能用来被实现,继承接口,然

    2024年02月06日
    浏览(35)
  • 【CMU 15-445】Extendible Hash Table 可扩展哈希详细理解

    最近在学习CMU的15-445 DB课程,在做Project1的Extendible Hash Table的时候,由于是先看了课程,过了一个多星期才做的Lab,对extendible hash table只能说是知道大体的意思,并没有透彻的了解它,尤其是bucket指针和数据重分配这一部分,涉及到比较tricky的位运算,在一知半解的情况下实

    2024年02月09日
    浏览(25)
  • ts中interface自定义结构约束和对类的约束

    一、interface自定义结构约束对后端接口返回数据 二、接口请求参数限制   三、继承  四、类中的使用 1,类的写法(必须限制useName,useAge的类型,否则报错 2、修饰符 2-1、readonly只读 2-2、public(默认值  公开的  都能访问) 2-3、protected (受保护的,只能在当前类和当前类的

    2024年02月13日
    浏览(24)
  • ts的class类的使用与继承, es6新增的class类

    前言:         ts的class类的使用与继承, es6新增的class类。         在ES6中为了更好的把js设计成面向对象的语言的语法特征,提出了class 类,class的本质是函数,类不可重复声明,类定义不会被提升,让js更像面向对象编程的语法。         类名建议大写,在严格要求

    2024年02月05日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包