前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >typescript 属性修改器 可选 只读 索引签名

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

作者头像
路过君
发布2022-04-13 13:47:57
发布2022-04-13 13:47:57
69600
代码可运行
举报
运行总次数:0
代码可运行

可选属性

代码语言:javascript
代码运行次数:0
运行
复制
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){}

只读属性

代码语言:javascript
代码运行次数:0
运行
复制
interface MyType {
	readonly prop: string
}
const obj = {prop:'a'}
obj.prop = 'b' //报错

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

代码语言:javascript
代码运行次数:0
运行
复制
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

代码语言:javascript
代码运行次数:0
运行
复制
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
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022/03/21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 可选属性
  • 只读属性
  • 索引签名
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档