news 2026/7/6 7:22:34

对应类型和索引签名

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
对应类型和索引签名

对象类型

对象类型用于描述对象的结构——对象有哪些属性、每个属性的类型、是否可选、是否只读等。它是 TypeScript 中最核心、最常用的类型之一。

对象类型的定义方式

方式1:匿名对象类型
// 直接在变量声明中定义 let user: { id: number; username: string } = { id: 1, username: "alice" }; // 函数参数 function printUser(user: { name: string; age: number }) { console.log(`${user.name} is ${user.age} years old`); }
方式2:接口(Interface)
interface User { id: number; name: string; email: string; } const user: User = { id: 1, name: "Alice", email: "alice@example.com" };
方式3:类型别名(Type Alias)
type User = { id: number; name: string; email: string; }; const user: User = { id: 1, name: "Alice", email: "alice@example.com" };
方式4:类(Class)
class User { id: number; name: string; constructor(id: number, name: string) { this.id = id; this.name = name; } } const user: User = new User(1, "Alice");

索引签名

索引签名用于定义对象可以拥有的任意数量的属性,并约束这些属性的键和值的类型。它解决了"我不知道对象会有哪些具体属性"的问题。

type Obj = { name: string; age: number; } // 这个类型非常精确: const alice: Obj = { name: "Alice", age: 25 }; // ✅ 完美匹配 // const bob: Obj = { // name: "Bob", // age: 30, // email: "bob@test.com" // ❌ 错误!Obj 类型中没有定义 `email` // };

Obj加上一个索引签名,它就从“固定形状”变成了“灵活字典”:

type FlexibleObj = { name: string; age: number; // 索引签名:允许添加任意字符串属性,且值必须是 string 类型 [key: string]: string; }
const alice: FlexibleObj = { name: "Alice", age: 25, // ❌ 报错!注意这里 email: "alice@test.com", // ✅ 现在可以添加额外属性了 city: "Beijing", // ✅ 也可以添加其他属性 };

当你写上[key: string]: string后,就等于告诉 TypeScript:“这个对象里的所有属性值,都必须是string类型。”

  • name: string符合要求。

  • age: number是数字,不符合,所以报错。

如何修复?

1使用联合类型,让索引签名的类型包含age的类型。[key: string]: string | number;

2 [key: string]: any;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/6 7:22:31

STM32与PCF8591的ADC/DAC信号处理方案详解

1. 项目背景与核心需求在工业控制和嵌入式系统开发中,信号转换是最基础也最关键的环节之一。PCF8591作为一款集成了ADC和DAC功能的低成本芯片,配合STM32F405ZG这类高性能MCU,能够构建出灵活可靠的信号处理系统。这个组合特别适合需要同时处理…

作者头像 李华
网站建设 2026/7/6 7:20:22

嵌入式条码识别系统开发:LV30与TM4C1294方案详解

1. 项目概述:嵌入式条码识别系统的核心价值在工业自动化、零售管理和物流仓储等场景中,快速准确的条码识别能力直接影响着作业效率。传统基于PC的解决方案存在体积庞大、功耗高、灵活性差等痛点,而采用LV30条码扫描器与TM4C1294NCPDT微控制器…

作者头像 李华
网站建设 2026/7/6 7:20:17

PIC18F45K50与DC-DC降压转换器的I2C控制设计

1. 项目背景与核心器件选型解析171010550这个型号在公开资料中较为罕见,经过多方查证,推测可能为某款DC-DC降压转换器芯片的定制型号或厂商内部编码。结合项目标题中提到的PIC18F45K50微控制器和I2C通信需求,我们可以合理推断这是一款支持I2C…

作者头像 李华
网站建设 2026/7/6 7:14:51

MC6470与PIC32MX470F512L在运动控制中的高效协同方案

1. 项目概述:MC6470与PIC32MX470F512L的强强联合在工业自动化和机器人控制领域,实现高精度运动控制一直是个经典难题。最近我在一个智能仓储机器人项目中,尝试将MC6470运动协处理器与PIC32MX470F512L主控芯片组合使用,意外获得了令…

作者头像 李华
网站建设 2026/7/6 7:10:00

EM3080-W条码解码芯片与PIC18LF45K22微控制器集成方案

1. EM3080-W条码解码芯片与PIC18LF45K22微控制器的硬件架构解析EM3080-W是新大陆自动识别技术有限公司推出的一款高性能条码解码芯片,专为嵌入式条码扫描应用而设计。这款芯片采用先进的解码算法,能够快速准确地识别各类一维条码和二维码,包括…

作者头像 李华