Typescript 当wtih--nomplicitany时,阻止foo[';(任意名称)';]的原因是什么?

Typescript 当wtih--nomplicitany时,阻止foo[';(任意名称)';]的原因是什么?,typescript,Typescript,这些代码在没有——不复杂——的情况下工作,但是失败了 var name = 'abc'; document.body.dataset[name] = 1; var property = document.body.dataset[name]; var o = {}; var name = 'abc'; o[name] = 1; var property = o[name]; 我部分理解它,因为o['arbiryname']是“隐式的”any类型。然而,当存在已知的类型化属性时,为什么会有人使

这些代码在没有——不复杂——的情况下工作,但是失败了

var name = 'abc';
document.body.dataset[name] = 1;
var property = document.body.dataset[name];

var o = {};
var name = 'abc';
o[name] = 1;
var property = o[name];
我部分理解它,因为
o['arbiryname']
是“隐式的”
any
类型。然而,当存在已知的类型化属性时,为什么会有人使用它而不是
o.arbirryName
?允许这样做,让“一个选择不键入的方法”可以吗?(as)


我认为应该有一些很好的理由来阻止它,我想知道它们是什么。

它没有被
--noImplicitAny
标志阻止,只是提醒您注意,这样您就可以通过将其显式设置为any来“选择不键入”

var property: any = o[name];

不能用变量
arbirryName
o.arbirryName
,必须对其进行硬编码。@Prinzhorn是的,在这种情况下,我们应该使用o[arbirryName]。然而,我们不能用——不简单。我想知道我们为什么要阻止这个。谢谢你修复了最后一行!那么我怎样才能使
o[name]=1
正常工作呢?(顺便说一句:那个修复程序不起作用,编译器仍然说“对象类型的索引签名隐式地有一个'any'类型。”)