TypeScript 如何做对象键类型

写代码时,你有没有遇到过这种情况:给一个对象赋值时,键名打错了,编辑器没提醒,等到运行时才发现报了个莫名其妙的错?比如你想给用户信息对象加userName,结果写成了userNmae,要是用普通的JavaScript,可能要等到功能测试时才抓出这个问题。如果换成TypeScript,就能从根源上避免这类错误——这就得用到它的对象键类型功能了。

什么是对象键类型?用奶茶店举个例子

对象键类型简单说,就是给对象的“键”定好规矩,告诉TypeScript:这个对象只能用哪些词当键,不能乱改。

TypeScript 如何做对象键类型

举个生活化的例子:你开了家奶茶店,有个“点单对象”,里面的键规定只能是“奶茶类型”“甜度”“冰量”这三个,就像你给客人的点单栏画了三个固定的格子,客人(开发者)只能在这三个格子里填,不能自己加“加珍珠”(除非你提前加进去),也不能写错“甜度假”。

换成TypeScript的话,就相当于给这个对象的键加上了限制,只要你写错键名,编辑器会立刻标红提醒,不用等运行才发现问题。

基础用法:给普通对象定死键

最常用的,是直接在对象类型里声明允许的键,再给每个键定对应的值类型。

比如写一个用户信息的对象,要求键只能是name(字符串)、age(数字),不能有别的键,写法很简单:

`typescript

type User = {

name: string;

age: number;

};

`

这就像给对象装了个“门禁”,只有name和age两个名字能通过,要是你写const myUser: User = { nam: "小明", age: 18 };,编辑器会马上说“‘nam’不存在于类型‘User’中”,帮你揪出拼写错误。

灵活点:允许部分自定义键的对象

有时候你需要更灵活的对象,比如一个“商品详情对象”,基础键是id和name,但还可以加各种自定义属性(比如price、库存、产地)。这时候用[key: string]: 类型的写法就行,它的意思是“除了固定键,其他键只要是字符串,值是对应类型就可以”。

比如:

`typescript

type Product = {

id: string;

name: string;

[key: string]: any; // 允许任意字符串键,值可以是任意类型

};

// 这样写是对的

const myProduct: Product = {

id: "123",

name: "奶茶",

price: 15,

库存: 100

};

`

这个用法就像奶茶店的“自定义加料区”,基础的“杯型”“甜度”是固定的,其他加料你可以自己加,TypeScript不会拦着。

进阶技巧:用枚举当键类型

如果你的键是固定的几个选项,比如订单状态只能是待付款、已付款、已发货、已完成,用枚举(enum)当键类型会更严谨,比直接写字符串键更不容易错。

写法是这样的:

`typescript

enum OrderStatus {

Pending = "待付款",

Paid = "已付款",

Shipped = "已发货",

Completed = "已完成"

}

type Order = {

orderId: string;

status: OrderStatus; // 键用枚举类型

};

// 正确写法

const myOrder: Order = {

orderId: "456",

status: OrderStatus.Paid

};

// 错误写法,会标红,因为"已付"不在枚举里

const wrongOrder: Order = {

orderId: "789",

status: "已付"

};

`

这就像奶茶店的“甜度选项”,只有全糖、半糖、无糖这几个官方选项,客人不能自己写“随便甜”,避免了模糊的输入。

学会这些对象键类型的用法,就能让你的代码少出很多低级错误,写起来更省心。

上一篇 Swift编程语言核心特性与日常开发中的高效应用科普