当前位置: 首页 > article >正文

Typescript interface

我来详细展开 接口Interface 的具体用法配合实际例子---1. 基础对象接口// 定义用户接口interface User {id: number;name: string;email: string;}// 使用接口const user: User {id: 1,name: 张三,email: zhangsanexample.com};// ❌ 错误缺少必填字段const badUser: User {id: 1,name: 张三// Error: Property email is missing};---2. 可选属性?interface Product {id: number;name: string;price: number;description?: string; // 可选discount?: number; // 可选}// 可以不带可选字段const phone: Product {id: 101,name: iPhone,price: 6999};// 也可以带上const laptop: Product {id: 102,name: MacBook,price: 12999,description: 轻薄本,discount: 0.9};---3. 只读属性readonlyinterface Point {readonly x: number;readonly y: number;}const p: Point { x: 10, y: 20 };// ❌ 错误无法修改只读属性p.x 100; // Error: Cannot assign to x because it is a read-only property实际场景配置对象interface Config {readonly apiUrl: string;readonly timeout: number;readonly retries: number;}const appConfig: Config {apiUrl: https://api.example.com,timeout: 5000,retries: 3};// 防止运行时意外修改配置// appConfig.apiUrl hack.com; // ❌ 编译错误---4. 函数接口定义函数结构// 定义一个验证函数的接口interface Validator {(value: string): boolean; // 接收string返回boolean}// 实现const isEmail: Validator (value) {return value.includes();};const isPhone: Validator (value) {return /^1[3-9]\d{9}$/.test(value);};// 使用console.log(isEmail(testqq.com)); // trueconsole.log(isPhone(13800138000)); // true带参数的函数接口interface Calculate {(a: number, b: number, operation: add | subtract): number;}const calc: Calculate (a, b, op) {return op add ? a b : a - b;};---5. 索引签名动态属性// 键是字符串值是数字interface ScoreMap {[subject: string]: number;}const scores: ScoreMap {math: 95,english: 88,physics: 92};// 可以动态添加scores.chemistry 90;// ❌ 错误值类型不匹配scores.history A; // Error: Type string is not assignable to type number实际场景缓存/字典interface Cache {[key: string]: any;}const memoryCache: Cache {};memoryCache.user_123 { name: 张三 };memoryCache.order_456 { items: [] };---6. 接口继承extendsinterface Animal {name: string;age: number;}// Dog 继承 Animal并添加自己的属性interface Dog extends Animal {breed: string;bark(): void;}const myDog: Dog {name: 旺财,age: 3,breed: 金毛,bark() {console.log(汪汪);}};多重继承interface Flyable {fly(): void;}interface Swimmable {swim(): void;}// 鸭子会飞也会游泳interface Duck extends Flyable, Swimmable {quack(): void;}const duck: Duck {fly() { console.log(飞); },swim() { console.log(游泳); },quack() { console.log(嘎嘎); }};---7. 接口实现类implementsinterface Database {connect(): void;query(sql: string): any[];close(): void;}// 类必须实现接口的所有成员class MySQLDatabase implements Database {connect() {console.log(连接MySQL);}query(sql: string) {console.log(执行:, sql);return [];}close() {console.log(关闭连接);}}class MongoDatabase implements Database {connect() {console.log(连接MongoDB);}query(sql: string) {// Mongo用不同的语法但接口保持一致return [];}close() {console.log(关闭连接);}}---8. 实际综合案例API 层设计// 请求参数接口interface LoginParams {username: string;password: string;remember?: boolean;}// 响应数据接口interface ApiResponseT {code: number;message: string;data: T;}// 用户信息接口interface UserInfo {id: number;username: string;avatar: string;roles: string[];}// 登录响应类型type LoginResponse ApiResponse{token: string;user: UserInfo;};// 实际使用async function login(params: LoginParams): PromiseLoginResponse {const res await fetch(/api/login, {method: POST,body: JSON.stringify(params)});return res.json();}// 调用login({ username: admin, password: 123456 }).then(res {if (res.code 200) {console.log(登录成功:, res.data.user.username);}});---9. 接口 vs 类型别名快速对比// 接口可以多次声明自动合并interface Window {myApp: any;}interface Window {version: string;}// 最终 Window 有 myApp 和 version 两个属性// 类型别名不能重复声明type Window { myApp: any };// type Window { version: string }; // ❌ 报错// 类型别名适合做复杂类型运算type StringOrNumber string | number;type UserKeys keyof User; // 提取键名---需要我继续展开 泛型 或 类 的具体例子吗

相关文章:

Typescript interface

我来详细展开 接口(Interface) 的具体用法,配合实际例子:---1. 基础对象接口 // 定义用户接口 interface User {id: number;name: string;email: string; }// 使用接口 const user: User {id: 1,name: "张三",email: &…...

StructBERT中文句子匹配效果展示:AI客服对话中用户多轮提问语义连贯性分析

StructBERT中文句子匹配效果展示:AI客服对话中用户多轮提问语义连贯性分析 1. 项目背景与工具介绍 StructBERT中文句子相似度分析工具是基于阿里达摩院开源的先进预训练模型开发的本地化语义匹配解决方案。这个工具专门针对中文语言特点进行了深度优化&#xff0c…...

Qwen3-14B大模型推理部署教程:支持对话/生成/推理多任务实战

Qwen3-14B大模型推理部署教程:支持对话/生成/推理多任务实战 1. 快速了解Qwen3-14B镜像 Qwen3-14B是通义千问推出的大语言模型,支持对话、文本生成和逻辑推理等多种任务。这个私有部署镜像经过专门优化,让你能在自己的硬件上快速运行这个强…...

文墨共鸣功能全解析:StructBERT双塔/单塔架构怎么选?

文墨共鸣功能全解析:StructBERT双塔/单塔架构怎么选? 1. 理解文墨共鸣的核心功能 文墨共鸣是一个融合深度学习技术与传统美学的语义相似度分析系统。它能够判断两段中文文本在语义层面的相似程度,并以独特的水墨风格界面呈现结果。这个系统…...

OpenClaw飞书机器人进阶:Qwen3.5-9B-AWQ-4bit实现图片自动分析

OpenClaw飞书机器人进阶:Qwen3.5-9B-AWQ-4bit实现图片自动分析 1. 为什么需要图片自动分析助手 上周整理项目资料时,我发现自己电脑里堆满了会议白板照片、产品截图和手写笔记。手动整理这些图片不仅耗时,还经常漏掉关键信息。直到发现Open…...

一口气读懂 PCA 主成分分析:从原理到代码,本科生/研究生都能彻底学会

一口气读懂 PCA 主成分分析:从原理到代码,本科生/研究生都能彻底学会 大家好,今天我们用最通俗、最详细、最不绕弯子的方式,把 PCA(主成分分析) 讲明白。 不管你是刚接触机器学习的本科生,还是做…...

最通俗的 LDA 线性判别分析教程

🔥 最通俗的 LDA 线性判别分析教程(本科生/研究生都能懂) 大家好,今天我们来彻底吃透LDA(线性判别分析)。 这是机器学习、模式识别、数据降维里必考、必用、必懂的算法,面试、比赛、写论文都高频…...

seo外包公司如何提高网站的用户体验_seo外包公司有哪些常见的优化方法

seo外包公司如何提高网站的用户体验 在当前的数字化时代,网站的用户体验(User Experience, UX)已经成为网站成功的关键因素之一。优秀的用户体验不仅能提升网站的流量,还能增加用户的黏性和转化率。对于那些选择了外包SEO服务的企…...

Qwen3-14B-Int4-AWQ辅助系统设计:从需求到UML类图与序列图的自动生成

Qwen3-14B-Int4-AWQ辅助系统设计:从需求到UML类图与序列图的自动生成 1. 系统设计的新助手 想象一下这样的场景:你刚开完需求讨论会,脑子里装满了各种功能模块和交互流程的构想。现在需要把这些想法转化为规范的UML设计文档,但手…...

GTE语义搜索在网络安全领域的应用:威胁情报分析系统

GTE语义搜索在网络安全领域的应用:威胁情报分析系统 1. 网络安全的新挑战与机遇 每天,安全分析师都要面对海量的威胁数据——从安全警报、漏洞报告到攻击日志,信息量庞大且分散。传统的关键词搜索就像是用渔网捞针,经常漏掉重要…...

PyTorch 2.8镜像快速验证:RTX 4090D执行torch.cuda.is_available()全流程

PyTorch 2.8镜像快速验证:RTX 4090D执行torch.cuda.is_available()全流程 1. 镜像环境概述 PyTorch 2.8深度学习镜像为RTX 4090D显卡深度优化,提供开箱即用的高性能计算环境。这个镜像专为24GB显存显卡设计,预装了完整的CUDA 12.4工具链和必…...

OpenClaw配置优化:Kimi-VL-A3B-Thinking的vllm参数调校指南

OpenClaw配置优化:Kimi-VL-A3B-Thinking的vllm参数调校指南 1. 为什么需要关注vllm参数调校 去年第一次接触Kimi-VL-A3B-Thinking多模态模型时,我天真地以为只要把模型跑起来就能获得理想性能。结果在OpenClaw上部署后,处理简单的图文问答任…...

OpenClaw家庭相册:Kimi-VL-A3B-Thinking智能归档与回忆生成

OpenClaw家庭相册:Kimi-VL-A3B-Thining智能归档与回忆生成 1. 为什么需要智能相册管理 去年夏天整理家庭照片时,我发现自己陷入了数字时代的典型困境——手机里有8000多张照片,电脑硬盘上还有历年备份的3万多张。想找一张孩子第一次走路的照…...

如何借助SEO优化站长工具进行内链优化

如何借助SEO优化站长工具进行内链优化 在当前竞争激烈的网络环境中,搜索引擎优化(SEO)已经成为了提升网站流量的关键手段之一。而在SEO的多种策略中,内链优化尤为重要。内链,也就是网站内部的链接,是搜索引…...

YOLOE官版镜像效果展示:YOLOE-v8s模型在低光照场景下的鲁棒分割效果

YOLOE官版镜像效果展示:YOLOE-v8s模型在低光照场景下的鲁棒分割效果 想象一下,深夜的街道监控画面,或者光线昏暗的仓库内部,传统的视觉模型往往“看不清”或“认不准”,导致关键目标漏检或误判。这正是许多实际应用场…...

实时手机检测模型在安防监控中的应用:自动识别违规使用手机行为

实时手机检测模型在安防监控中的应用:自动识别违规使用手机行为 1. 应用场景与需求分析 1.1 安防监控中的手机检测痛点 在考场、保密场所、生产车间等特殊环境中,违规使用手机可能带来严重的安全隐患。传统人工监控方式存在以下问题: 人力…...

程序员味觉图谱:咖啡因浓度与bug数量的关联

软件测试中的“化学搭档”在软件测试工程师的日常工具箱中,除了脚本语言、自动化框架和监控工具,还有一项不可或缺的非技术性资产——咖啡因。从浓缩咖啡到功能饮料,这种生物碱早已超越简单的提神需求,成为了一种独特的“职业味觉…...

Omni-Vision Sanctuary赋能Claude等对话Agent:实现文本对话到视觉创作的延伸

Omni-Vision Sanctuary赋能Claude等对话Agent:实现文本对话到视觉创作的延伸 1. 引言:当语言模型遇上视觉创作 想象一下这样的场景:你正在和Claude讨论一个创意方案,描述着脑海中的画面——"我想要一个未来感十足的城市夜景…...

【ArUco GridBoard实战】从生成到高精度位姿估计全流程解析

1. ArUco GridBoard技术解析与应用场景 在工业视觉和机器人定位领域,精确的位姿估计是核心需求。ArUco GridBoard作为一种特殊的标记板,相比单个ArUco标记具有显著优势。我曾在多个工业项目中实测发现,使用5x7的GridBoard在3cm2cm的限定尺寸下…...

低资源场景下的效果:nlp_structbert_sentence-similarity_chinese-large 小样本学习能力展示

低资源场景下的效果:nlp_structbert_sentence-similarity_chinese-large 小样本学习能力展示 最近在做一个垂直领域的智能客服项目,客户给的标注数据少得可怜,满打满算也就几十对对话样本。团队里有人犯愁,觉得这点数据连模型热身…...

Qwen2.5-1.5B效果展示:金融术语解释+财报摘要生成准确率实测

Qwen2.5-1.5B效果展示:金融术语解释财报摘要生成准确率实测 1. 测试背景与目的 在金融领域,准确理解专业术语和快速分析财务报告是两项核心需求。传统方式需要专业人士花费大量时间进行解释和分析,而AI模型的出现让自动化处理成为可能。 本…...

基于Qwen3-1.7B的智能对话开发:入门到实战

基于Qwen3-1.7B的智能对话开发:入门到实战 1. 认识Qwen3-1.7B:轻量级大语言模型 Qwen3-1.7B是阿里巴巴通义千问系列中的轻量级成员,特别适合开发者快速搭建智能对话系统。相比传统大模型,它具有以下特点: 参数规模适…...

2000-2024年县域就业人数乡村从业人员数数据

数据介绍 国家统计局统计,乡村从业人员数量庞大,且随着农业现代化和农村经济的发展,乡村从业人员的结构也在发生变化。农林牧渔业从业人员数量有所减少,而农村电商、乡村旅游等新兴产业的从业人员数量在增加。 数据名称&#xf…...

SEO_从零开始,手把手教你制定SEO执行计划

SEO: 从零开始,手把手教你制定SEO执行计划 在当今数字化时代,网站的SEO(搜索引擎优化)是提高网站流量、吸引目标用户的关键。如果你是一个从零开始的SEO爱好者,可能会觉得这个领域有点复杂。不过,别担心&a…...

计算机网络核心知识点笔记

计算机网络核心知识点笔记 一、TCP/IP五层模型详解 1. 核心思想 数据在发送端从应用层逐层向下封装(添加头部),接收端从物理层逐层向上解包(剥去头部),最终还原数据供应用程序处理。 2. 五层结构与核心内容…...

Legacy iOS Kit:让旧款iPhone/iPad重获新生的终极解决方案

Legacy iOS Kit:让旧款iPhone/iPad重获新生的终极解决方案 【免费下载链接】Legacy-iOS-Kit An all-in-one tool to restore/downgrade, save SHSH blobs, jailbreak legacy iOS devices, and more 项目地址: https://gitcode.com/gh_mirrors/le/Legacy-iOS-Kit …...

OpenClaw新手避坑指南:Qwen3.5-9B对接常见问题解决方案

OpenClaw新手避坑指南:Qwen3.5-9B对接常见问题解决方案 1. 为什么需要这份指南 上周我在本地部署OpenClaw对接Qwen3.5-9B模型时,连续踩了五个坑。从安装报错到模型连接超时,每个问题都消耗了我至少两小时的排查时间。这种经历让我意识到&am…...

实测GLM-4v-9b:单卡24G显存,高清图片识别与问答实战体验

实测GLM-4v-9b:单卡24G显存,高清图片识别与问答实战体验 1. 模型概述与核心优势 GLM-4v-9b是智谱AI于2024年开源的多模态视觉-语言模型,基于90亿参数的GLM-4-9B语言模型架构,通过端到端训练整合了视觉编码器。该模型在11201120高…...

SNMP V3安全配置实战:从零到企业级运维的完整指南(附华为/Cisco/Linux命令)

SNMP V3安全配置实战:从零到企业级运维的完整指南 金融行业的运维总监张伟最近遇到个头疼事:审计报告指出他们使用的SNMP V2c存在严重安全隐患。在连夜召开的紧急会议上,安全团队展示了用Wireshark抓取的明文社区字符串——攻击者完全可以利用…...

PDF-Extract-Kit-1.0精彩案例:IEEE论文PDF中LaTeX公式无损提取演示

PDF-Extract-Kit-1.0精彩案例:IEEE论文PDF中LaTeX公式无损提取演示 1. 引言:当学术研究遇上PDF公式提取难题 如果你经常需要阅读或处理学术论文,尤其是IEEE这类技术文档,一定遇到过这样的烦恼:看到一篇论文里的公式非…...