我有以下接口
interface Test {
data: string[]
}
const DATA_LIST = {
USER: ["some string"],
OTHER: ["some other string", "random value", "etc"]
} as const;
const test : Test = {
data: DATA_LIST.OTHER
}
在上面的代码中,我不能将DATA_LIST.OTHER
分配给data
,这是我的用例,我有几个元组要分配给数据。
我无法分配它,因为在我尝试分配只读元组时,它只接受string[]
有没有更好的办法?
https://www.typescriptlang.org/play?ssl=12&ssc=2&pln=1&pc=1#code/JYOwLgpgTgZghgYwgAgCoQM5mQbwFDKHIAmcYcAXMllKAOYDaAungL554ID2IWyAIgEFUggPoAZAJIBlVMgC8uAkQCq0gKIAlKgwBEGLgFsUNerqYAaZYQDyqABJad+oyi5gAFtGphaIOroWyLpQcCDERsgAbnAANgCuEIHBEGAI5mzIcBjI3LxgANwceXyQfFTofIr4RCRklALCYlKyAHR2jppsQA
2条答案
按热度按时间ttvkxqim1#
根本的问题很简单:
...这意味着您不能将
string[]
分配给readonly string[]
。如果你想在其他时间点重新分配
test.data
,那么你可以简单地执行data: [...DATA_LIST.OTHER]
,这将摆脱readonly
方面,并允许你分配一个简单的string[]
属性。如果您不希望重新分配
test.data
,则可以将属性的类型更改为readonly string[]
或string[] | readonly string[]
。whlutmcx2#
元组是具有固定长度的特定类型,并且每个元素具有特定类型。它不能直接赋值给数组类型。然而,总有一种方法,你可以把它转换成一个数组: