Javascript {[k:string]:string}和Map<;字符串,字符串>;

Javascript {[k:string]:string}和Map<;字符串,字符串>;,javascript,typescript,Javascript,Typescript,我理解正常的Map格式。但是我看到一些人对相同的用例使用{[k:string]:string} 它们是相同的还是不同的?我找不到关于它的用例的适当文档 有可能把一个转换成另一个吗 它是否与对象的去结构化有关?在基本意义上,{[k:string]:string}用于对象,Map用于Javascript原语,这两个原语并不完全相同 例如,您可以执行映射,因为映射可以使用对象作为键。但是,{[k:object]:string}会立即抛出一个错误,因为javascript对象不能使用对象作为键 这与解构

我理解正常的
Map
格式。但是我看到一些人对相同的用例使用
{[k:string]:string}

它们是相同的还是不同的?我找不到关于它的用例的适当文档

有可能把一个转换成另一个吗


它是否与对象的去结构化有关?

在基本意义上,
{[k:string]:string}
用于对象,
Map
用于Javascript原语,这两个原语并不完全相同

例如,您可以执行
映射
,因为映射可以使用对象作为键。但是,
{[k:object]:string}
会立即抛出一个错误,因为javascript对象不能使用对象作为键


这与解构无关,而是与。当你说你看到它们可以互换使用时,我不知道你的意思是什么,因为把它们混合在一起时会抛出一个错误。

@Code peedient wut?不,一个对象。@Code学徒嗯…不<代码>{[key:type]:type}是我们在typescript中标记对象键类型的方式……在这种情况下,
[]
不是一个数组,而是一个动态访问的对象键。噢,天哪……括号把我弄糊涂了。所以说
{}
{abc:test}
是一样的吗?我的意思是,如果我将某个类型定义为
{[k:string]:string}
,那么我可以将一个空的定义为
let abc={}
。因为它是一个对象?很难说在您的特定用例中到底发生了什么,但是您确定要
让{attachments}=resource.current.aws.policies.attachments
?这不应该是
让{attachments}=resource.current.aws.policies