在TypeScript(TS)中,const 和 readonly 都是用于确保变量或属性不被重新赋值的工具,但它们的使用场景和语义有所不同。 1.作用域和生命周期: const 用于声明一个变量,并且这个变量的值在初始化后不能被重新赋值。它的作用域和生命周期取决于它被声明的位置。如果它在函数内部被声明,那么它的作用域就是该函数内部...
总的来说,const和readonly在TypeScript中各有其用,它们的主要区别在于const用于确保变量的引用不变,而readonly用于确保对象的特定属性不变。
做为变量使用的话用 const,若做为属性则使用readonly。参考资料:https://www.tslang.cn/docs/handbook/interfaces.html 参考答案:readonly 关键字当作为属性的前缀时,可确保一旦设置其值,此后就无法修改。它对于确保在使用配置对象或在组件或函数之间传递数据等场景中的不变性特别有用。readonly 关键字可以在属...
//最后一行可以看到就算把整个ReadonlyArray赋值到一个普通数组也是不可以的。解决的方法就是类型断言重写(就是没有办法) 区别readonly 和 const:const针对变量,readonly针对属性。 (3)额外的属性检查:多数情况下它都是个bug,不建议绕开检查 interface SquareConfig {color?: string; width?: number;}functioncreate...
Readonly 就是为类型对象每一项添加前缀 Readonly interfacePerson{readonlyname:string;// 只有这一项有readonlyage:number;id?:number;}// 使用方法constnewObj:Readonly<Person>={name:'张三',age:1,id:1};// newObj.name = '李四'; // 异常 因为有readonly只读属性,只能初始化声明,不能赋值。// Read...
// 只读属性 readonly interfaceIInfo{ readonlyuname: string readonlyuage: number } letbeauty:IInfo= { uname:"李庚希", uage:18 } // beauty.uname = "赵丽颖" // beauty.uage = 28 // readonly VS const // const aaa = 123; // aaa = 456; ...
readonly不可改变的,定义完后就不能修改,是不是和const有点像,不过const是针对变量,readonly是针对属性 下面我们把id添加上readonly 4.函数funtion 我们要规定函数的输入类型和返回类型 在形参后面接冒号声明 形参的类型,在()后面冒号声明 返回值类型
Readonly构建了一个类型,其类型的所有属性被设置为只读。重新分配新的值 TS 就会报错。 代码语言:javascript 复制 type User={name:stringage:numberaddress:stringoccupation:string}type ReadOnlyUser=Readonly<User>constuser:ReadOnlyUser={name:"小智",age:24,address:"厦门",occupation:"大迁世界"}user.name=...
const newObj: Readonly<Person> = { name: '张三', age: 1, id: 1 }; // newObj.name = '李四'; // 异常 因为有readonly只读属性,只能初始化声明,不能赋值。 // Readonly<Person> 等同于 NewPerson interface NewPerson { readonly name: string; ...
type Readonly<T> = { readonly [P in keyof T]: T[P]; }; 该工具类型可以构造一个新的类型, 并将类型参数 T 中的所有属性变成只读属性 interface A { x: number; y: number; } type T = Readonly<A>; // {x:number; y:number}} const a: T = { x: 0, y: 0 } // a.x = ...