TypeScript 的 interface

ops/2024/9/25 9:14:23/

在TypeScript(TS)中,interface 是一个非常核心的概念,用于定义类型结构。它帮助开发者为对象、函数参数或者返回值等设定一种结构化的类型规范。接口允许你定义一个蓝图,描述一个对象应该具有的形状(属性和方法)。这有助于提升代码的可读性、可维护性,并且在编译时期就能捕获类型错误。

基本用法

typescript">// 定义一个接口
interface Person {firstName: string;lastName: string;age?: number; // 使用问号表示该属性是可选的
}// 创建一个符合Person接口的对象
const person: Person = {firstName: "John",lastName: "Doe",age: 30, // 可以有age属性
};// 或者
const personWithoutAge: Person = {firstName: "Jane",lastName: "Doe", // 不包含age也是合法的,因为它是可选的
};

函数类型接口

你还可以使用接口来定义函数的类型,包括函数参数和返回值的类型。

typescript">interface GreetingFunction {(name: string): string;
}const sayHello: GreetingFunction = (name) => {return `Hello, ${name}!`;
};

继承接口

接口之间可以相互继承,这意味着一个接口可以继承另一个接口的属性和方法,从而实现接口的复用。

typescript">interface Animal {name: string;makeSound(): void;
}interface Dog extends Animal {breed: string;
}const myDog: Dog = {name: "Rex",breed: "German Shepherd",makeSound() {console.log("Woof!");},
};

索引签名

接口还可以具有索引签名,用于描述可以通过索引访问的元素类型,通常用于数组或对象字面量。

typescript">interface StringArray {[index: number]: string; // 指定索引对应的值必须是字符串类型
}const myArray: StringArray = ["apple", "banana", "cherry"];

总结

interface 在 TypeScript 中是非常强大的工具,它帮助你构建复杂的数据模型,确保类型安全,使得代码更加健壮。通过组合、继承和索引签名等功能,接口能够灵活地适应各种复杂的类型定义需求。


http://www.ppmy.cn/ops/31854.html

相关文章

NLP中常见的tokenize方式及token类型

目录 Tokenizer的细节与计算方式Tokenizer的计算方式各种Tokenizer的优缺点 NLP中常用的Tokens单词Tokens(Word Tokens)子词Tokens(Subword Tokens)字符Tokens(Character Tokens)字节Tokens(Byt…

MYSQL从入门到精通(一)

1、概述 【1】使用率最高 2、数据库的重要性 【1】数组、集合、文件 【2】数据管理系统-MySQL 【3】持久化数据,容易管理、查询 3、相关概念 【1】DB database 数据库 【2】DBMS 数据库管理系统(MySQL就是其中一种) 【3】SQL 结构查询语…

MongoDB聚合运算符:$strLenCP

MongoDB聚合运算符&#xff1a;$strLenCP $strLenCP聚合运算符返回指定字符串中 UTF-8 代码点的数量。 语法 { $strLenCP: <string expression> }<expression>为可解析为字符串的表达式&#xff0c;如果解析为null或引用了不存在的字段&#xff0c;返回错误。 …

改变视觉创造力:图像合成中基于样式的生成架构的影响和创新

原文地址&#xff1a;revolutionizing-visual-creativity-the-impact-and-innovations-of-style-based-generative 2024 年 4 月 30 日 介绍 基于风格的生成架构已经开辟了一个利基市场&#xff0c;它将机器学习的技术严谨性与类人创造力的微妙表现力融为一体。这一发展的核…

C语言/数据结构——每日一题(移除链表元素)

一.前言 今天在leetcode刷到了一道关于单链表的题。想着和大家分享一下。废话不多说&#xff0c;让我们开始今天的知识分享吧。 二.正文 1.1题目要求 1.2思路剖析 我们可以创建一个新的单链表&#xff0c;然后通过对原单链表的遍历&#xff0c;将数据不等于val的节点移到新…

深入探索HTML与CSS:构建网页的基础

深入探索HTML与CSS&#xff1a;构建网页的基础 文章目录 深入探索HTML与CSS&#xff1a;构建网页的基础一、引言二、HTML&#xff1a;网页的骨架1. HTML文档结构2. HTML常用标签3. HTML表单 三、CSS&#xff1a;网页的装扮师1. CSS基本语法2. CSS选择器3. CSS盒模型4. CSS布局流…

基于YOLOv8的水稻虫害识别系统,加入BiLevelRoutingAttention注意力进行创新优化

&#x1f4a1;&#x1f4a1;&#x1f4a1;本文摘要&#xff1a;基于YOLOv8的水稻虫害识别&#xff0c;阐述了整个数据制作和训练可视化过程&#xff0c;并加入BiLevelRoutingAttention注意力进行优化&#xff0c;最终mAP从原始的 0.697提升至0.732 博主简介 AI小怪兽&#xff…

如何选择适合的美国站群服务器:经济实惠而可靠的选择

如何选择适合的美国站群服务器&#xff1a;经济实惠而可靠的选择 在今天的数字化时代&#xff0c;选择适合的服务器对于个人网站或企业来说至关重要。一台性能稳定、价格实惠的美国站群服务器能够为您的网站提供所需的支持&#xff0c;但在选择之前&#xff0c;有一些关键因素…