gpt4 book ai didi

typescript 用手头的只读属性初始化对象

转载 作者:搜寻专家 更新时间:2023-10-30 21:55:54 24 4
gpt4 key购买 nike

有没有办法在初始化一个对象字面量的同时声明它的带有只读属性的接口(interface)?

例如

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

关于 typescript 用手头的只读属性初始化对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56541293/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com