TS中const和readonly的区别

文章类型:TypeScript

发布者:hp

发布时间:2022-10-17

const和readonly都有表示只读的意思,他们区别是什么?

const主要用于变量,主要控制得是值

1:声明必须初始化,不能重新分配值,

2:隐含static,

3:编译期静态解析的常量

 const msg:string='小张'
msg='小李'//Cannot assign to 'msg' because it is a constant

readonly用在属性上

1:可以声明为类的成员,可以在声明中初始化,也可以在构造函数中初始化,

2:不默认static

3:运行期动态解析的常量

4:只能在类中使用

如果new方式读取更改值也是不允许的

namespace a{
class NameObj{
static readonly age:number=100
readonly age:number=99
readonly height:number
constructor(){
this.height=178
}


}
const name:NameObj=new NameObj()
// name.age=100//Cannot assign to 'age' because it is a read-only property
console.log(NameObj.age) //static方式不能通过new
console.log(name.age)


}