首页 > 其他分享 >TypeScript系列 3.接口和对象类型

TypeScript系列 3.接口和对象类型

时间:2023-07-09 14:33:37浏览次数:44  
标签:TypeScript 系列 name gender age number 接口 interface string

本系列知识部分基于小满 ZS 的TypeScript 系列教程。我也会补充一些视频没有的内容。

interface 介绍

interface即接口,在 ts 中用于描述对象的“形状”。js 是鸭子类型,鸭子类型的通俗说法是:“如果它走起路来像鸭子,叫起来也是鸭子,那么它就是鸭子。” 只要一个对象包含interface中定义的所有属性、方法,那么它就属于这个interface定义的对象类型。

interface 知识点

1. interface 定义的属性、方法,对应的对象中不能多也不能少

interface Student {
    name: string;
    age: number;
    say: () => void;
}

let a: Student = {  //报错,提示缺少name属性
    age: 18,
    say() {
        console.log(this.name);
    },
};

2. interface 重名会自动重合

interface Student2 {
    name: string;
    age: number;
}

interface Student2 {
    gender: string;
}

let b: Student2 = {
    name: "sq",
    age: 18,
    gender: "male",
};

3. 索引签名

有不确定的属性时,可以使用这个功能

interface Student3 {
    name: string;
    age: number;
    [propertyName: string]: any; //索引签名
}

let c: Student3 = {
    name: "sq",
    age: 18,
    ID: "18170023728",
    gender: "male",
};
// 调用
console.log(c["gender"]);
console.log(c.gender);

索引签名的类型也可以设置为 number:

这样可以模拟数组,熟悉 js 的应该知道,js 的数组也是一个对象

interface Student3 {
    name: string;
    age: number;
    [propertyName: number]: any;
}

let c: Student3 = {
    name: "sq",
    age: 18,
    1: "18170023728",
    2: "male",
};
// 调用
console.log(c[1]);

4. 可选属性 ?

一个属性可以有,也可以没有

interface Student4 {
    name: string;
    age: number;
    gender?: string;
}
let d2: Student4 = {
    name: "sam",
    age: 18,
};

5. 只读属性 readonly

制度属性不能被修改

interface Student5 {
    name: string;
    age: number;
    readonly id: string;
    readonly callBack: () => boolean;
}

let e: Student5 = {
    name: "sam",
    age: 18,
    id: "18170023728",
    callBack() {
        return true;
    },
};
//可以调用
e.callBack();

//不可以修改,报错
e.id = "18170023729";
e.callBack = () => false;

6. 接口继承

可以继承一个也可以继承多个

//export导出,可以避免相同文件夹/文件下,同一个接口名导致的各种问题
export interface Student extends Person, Singer {
    name: string;
}

interface Person {
    gender: string;
}
interface Singer {
    sing: boolean;
}

let f: Student = {
    name: "sam",
    gender: "male",
    sing: true
}

7. interface 约束函数类型

束函数的参数类型和返回值类型

interface Fn {
    (name: string): number[],
}

const fn: Fn = (name) => {
    return [1, 2]
}

标签:TypeScript,系列,name,gender,age,number,接口,interface,string
From: https://www.cnblogs.com/sq800/p/17538704.html

相关文章

  • TypeScript系列 2.任意类型
    本系列知识部分基于小满ZS的TypeScript系列教程。我也会补充一些视频没有的内容。类型的等级层次任意类型any、unkownObject包装类型NumberStringBoolean基本类型numberstringboolean字面量never一条基本原则:等级低的能给等级高的赋值,等级高的不能给等级低的......
  • ASP.NET Core SignalR 系列(二)- 中心(服务端)
    本章将和大家分享ASP.NETCoreSignalR中的中心(服务端)。本文大部分内容摘自微软官网:https://learn.microsoft.com/zh-cn/aspnet/core/signalr/hubs?view=aspnetcore-7.0废话不多说,我们直接来看一个Demo,Demo的目录结构如下所示:本Demo的Web项目为ASP.NETCoreWeb应用程序(目......
  • 关于接口和抽象类
    接口(Interface)和抽象类(AbstractClass)用于实现代码的抽象和封装。定义方式:接口是一种纯粹的抽象概念,只定义了方法的签名,没有实现;抽象类是一个可以包含抽象方法和具体方法的类。实现方式:一个类可以实现多个接口;一个类只能继承一个抽象类。方法:接口中的方法默认是公共的抽......
  • 在 Spring Boot 中使用 Dataway 配置数据查询接口
     Dataway介绍Dataway是基于DataQL服务聚合能力,为应用提供的一个接口配置工具。使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布。一站式都通过Dataway提供的UI界面完成。UI会以Jar包方式提供并集成到应用中并和应用共享同......
  • TypeScript+Vue3
    TypeScriptAny类型和unknown顶级类型1.没有强制限定哪种类型,随时切换类型都可以我们可以对any进行任何操作,不需要检查类型2.声明变量的时候没有指定任意类型默认为any3.弊端如果使用any就失去了TS类型检测的作用4.TypeScript3.0中引入的unknown类型也被认为是top......
  • 通过在本地项目中添加服务引用访问外部WebService项目接口
    访问外部WebService项目接口的第二种方式就是通过在本地项目中添加服务引用。以下学习验证过程,通过在本地建立一个winfrom项目,通过按钮点击,触发调用接口,执行代码处理逻辑,并在文本显示区域显示最终拿回的数据。(1)在Visualstudio新建一个winfrom项目: (2)右键项目,添加服务应用,填......
  • OpenMP优化调研系列文章(3)
    作者介绍谢依晖湖南大学硕士研究生在读,本科毕业于湖南大学计算机科学与技术专业本文调研了4篇与OpenMP优化相关的文献,对优化点分析如下:面向Open64的OpenMP程序优化[1]跨越过程边界的并行区重构Open64有着过程间分析优化部件,因此可以知道哪些函数使用了被调函数,从而可以通过在使用被......
  • luffy 查询所有课程接口、课程详情接口、课程详情后台之所有章节接口
    目录1查询所有课程接口1.1视图类1.2序列化类1.3表模型2课程详情接口3课程详情后台之所有章节接口3.1视图类3.2序列化类4所有课程前台,课程详情前台4.1课程列表页4.2课程详情页面5视频托管1查询所有课程接口#查询所有课程接口 -带过滤:按分类过滤-带排序:价格,......
  • 提升开发效率,轻松管理接口就用 Apipost
    API管理的难点在哪?相信无论是前端,还是后端的测试和开发人员,都遇到过这样的困难。不同工具之间数据一致性非常困难、低效。多个系统之间数据不一致,导致协作低效、频繁出问题,开发测试人员痛苦不堪。开发人员在Swagger定义好文档后,接口调试的时候还需要去Postman再定义一遍。......
  • 通过前端Ajax访问WebService形式的接口
    WebService是早期提供Web服务的一种形式(现在最新的方式是WebApi),其无关于编程语言,有java形式的WebService,也有C#形式的WebService。我们在项目中,需要和其他外部系统进行接口对接时,常使用WebService或WebApi,这取决于对方提供服务接口的使用的是那种技术。我们可以在本地模拟访问......