ts声明对象类型

TypeScript 中声明对象类型的技巧
本文介绍了如何在 TypeScript 中使用类型别名和接口来声明对象类型。通过示例展示了声明可选属性和只读属性的方法,并给出了具体用法。例如,创建了一个 `InfoType` 类型,包含 `name` 和 `age` 属性,以及一个可选的 `friend` 对象属性。接着,定义了一个 `info` 变量,符合 `IInfoType` 接口,并打印了其 `friend` 的 `name` 属性。

//通过类型(type)别名来声明对象类型
// type 别名InfoType={name:string,age:number}
//另外一种方式声明对象类型:接口interface
//可选属性
//只读属性
interface InfoType{
name:string
age:number
friend?:{name:string}

const info:IInfoType={
name:“why”,
age:18,
friend:{
name:“kobe”
}
}
console.log(info.friend?.name)

在 TypeScript 中,声明对象类型主要有两种方式:使用 `interface` 和 `type` 关键字,这两种方式都可以用来定义对象的结构,但在某些场景下它们的行为和使用方式存在差异。 ### 使用 `interface` 声明对象类型 `interface` 是 TypeScript 中用于定义对象类型的原始方式,它支持继承、合并等特性,并且在定义类时可以使用接口进行约束。例如: ```typescript interface Person { name: string; age: number; } ``` 上述代码定义了一个名为 `Person` 的接口,它包含两个必需属性:`name`(字符串类型)和 `age`(数字类型)。如果希望某些属性是可选的,可以在属性名后添加问号 `?`: ```typescript interface Person { name: string; age?: number; } ``` 在这个例子中,`age` 是一个可选属性,对象可以不包含它而不引发类型错误[^3]。 ### 使用 `type` 声明对象类型 `type` 关键字提供了另一种定义对象类型的方式,它不仅可以定义对象类型,还可以用于定义联合类型、交叉类型等更复杂的类型结构。例如: ```typescript type Person = { name: string; age: number; }; ``` 这种方式与 `interface` 的功能相似,但 `type` 不支持接口的合并行为,也不能被实现(如类实现接口)。不过,`type` 可以用于更复杂的类型组合,例如交叉类型: ```typescript type A = { x: number }; type B = { y: string }; type C = A & B; // 交叉类型,同时具有 x 和 y 属性 ``` ### 可选属性和只读属性 无论是 `interface` 还是 `type`,都可以定义可选属性和只读属性。例如: ```typescript interface Person { readonly id: number; name: string; age?: number; } ``` 在这个接口中,`id` 是只读属性,不能在对象创建后被修改;`age` 是可选属性,可以省略[^3]。 ### 映射类型 TypeScript 还支持映射类型,这是一种从现有类型派生出新类型的高级方式。例如,可以使用内置的 `Partial<T>`、`Readonly<T>` 等映射类型来快速修改对象属性的行为: ```typescript type PartialPerson = Partial<Person>; // 所有属性变为可选 type ReadonlyPerson = Readonly<Person>; // 所有属性变为只读 ``` 映射类型可以帮助减少冗余代码,并简化常见的类型操作任务[^2]。 ### 函数中的 `this` 类型 在函数中,TypeScript 允许通过 `this` 参数来指定函数内部 `this` 的类型。这有助于提供更精确的类型检查: ```typescript function greet(this: { name: string }) { console.log(`Hello, my name is ${this.name}`); } ``` 在这个例子中,`this` 的类型被明确指定为 `{ name: string }`,从而确保调用该函数时上下文对象的结构符合预期[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叮咚前端

你的鼓励是我们的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值