typescript - 打字稿用只读属性初始化对象
问题描述
有没有办法初始化一个对象文字并同时用只读属性声明它的接口?
例如
let a = { readonly b: 2, readonly c: 3 }
解决方案
您可以使用as const
断言:
let a = { b: 2, c: 3 } as const // typed as { readonly b: 2; readonly c: 3; }
a.b = 2 //Cannot assign to 'b' because it is a read-only property.
如果您只希望某些道具是只读的,那实际上是不可能的,最好的办法是使用一个Object.assign
包含只读属性的部分和另一个包含可变属性的部分:
let a = Object.assign({ b: 2, c: 3 } as const, {
d: 0
});
a.b = 2 // err
a.d = 1 //ok
推荐阅读
- blazor - OnParametersSetAsync 创建无限循环
- vue.js - 在Vue中重置文本输入的值
- java - 使用 Spring MVC 测试 OAuth Secured API - 没有令牌的测试不会按预期失败
- angular - JS Weak Map 无法推断自由对象的相等性 - 破解 WeakMap 的键值管道
- ggplot2 - 如何按照数字顺序调整 X 轴上的条形?
- windows - 如何隐藏以 std::process::Command 启动的进程的控制台窗口?
- prolog - Prolog - 相等运算符包装
- powershell - Powershell - 数组作为哈希表中的值?
- java - 在 Java 8 中使用 Optional 进行多次空检查
- c - 由于不相关的函数调用,C 字符串被垃圾值填充