前言
日常积累,欢迎指正
ts 中不可变量的实现方法有两种
- 1、使用 ES6 的 const 关键字声明的值类型
- 2、引用类型中被 readonly 修饰的属性
示例如下
:
/** 1、 const 常量 */
const TEST: string = "test1";
TEST = "test2"; // Uncaught TypeError: Assignment to constant variable
/** 2、非 readonly 修饰的对象属性 name */
interface Iobj1 {
name: string;
}
const obj1:Iobj1 = {
name: "test1"
};
obj1.name = "test2"; // 修改成功
/** 3、readonly 修饰的对象属性 name */
interface Iobj2 {
readonly name: string;
}
const obj2:Iobj2 = {
name: "test1"
};
obj2.name = "test2"; // 报错 Cannot assign to 'name' because it is a read-only property.
是不是疑惑为什么明明说被 const 修饰的变量是不允许被修改的这里没有被 readonly 修饰的 obj1 的 name 属性还可以修改呢?
这是因为 对象等引用类型虽然属性值被修改了但因为它们是引用类型,引用地址并没有变,这个值(引用地址)还是和原来一样是‘没有’ 被修改过的