typescript 属性修改器 可选 只读 索引签名

可选属性

interface MyType {
    name: string
    opts?: string
}
function func(opts:MyType){}
func({name:'a'})
func({name:'b',opts:'123'})
func({opts:'1234'})  //报错
// 通过结构给默认值
function func2({name,opts=''}: MyType){}

只读属性

interface MyType {
	readonly prop: string
}
const obj = {prop:'a'}
obj.prop = 'b' //报错

注:相同形状的类型可以兼容

interface MyType{
	prop: string
}
interface MyReadonlyType{
	readonly prop:string
}
let writableObj:MyType = {prop:'a'}
let readonlyObj:MyReadonlyType = writableObj
writableObj.prop = 'b' // 修改属性会导致readonlyObj.prop也变更,实际引用的同一个对象
readonlyObj.prop = 'c' // 报错

索引签名

索引的类型只能是number或string

interface StringArray {
	[ index: number]: string
}
const strArr: StringArray = ['a','b']
interface NumberMap {
	[ props: string]: number,
	length: number // 类型必须与索引类型兼容,例如需要定义string属性,那么索引的值类型必须是number | string
}
const numMap: NumberMap = {
	x: 100,
	y: 200,
	length: 2
}

posted on   路过君  阅读(17)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
历史上的今天:
2020-04-11 spring 启动时自动运行
2020-04-11 spring cloud oauth2授权服务 默认tokenService配置源码
2020-04-11 spring cloud 搭建oauth2授权服务 使用redis存储令牌
2020-04-11 spring cloud oauth2授权服务 clientDetails配置源码
2020-04-11 spring 验证框架
2020-04-11 IDEA 插件整理
2020-04-11 spring security笔记 默认登陆页面源码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示