使用['']语法的Typescript访问动态属性

Har*_*rry 10 javascript typescript

export class Foo{
 someproperty: string;
}
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么,当尝试访问动态对象属性时,我可以执行以下操作,正如我在此处的答案之一中所看到的:

let fooObj: foo = someObj['someproperty']; 
Run Code Online (Sandbox Code Playgroud)

但是这样做,我得到一个错误。

let fooObj: foo = someObj.someproperty;
Run Code Online (Sandbox Code Playgroud)

我试图理解为什么第一种方法可用于访问/分配动态对象。

错误:

"someproperty does not exist on type"

在此之前提出的问题,我感兴趣的是Angelo R的回答。

Asa*_*din 5

这只是TypeScript中的约定,为方便起见。如果要访问对象的类型签名中未定义的某些任意属性,则可以使用["foo"]表示法,并且类型检查器不会尝试强制所访问的实例在其类型签名中具有此类属性。 。

  • 有关TypeScript规范中的更多信息:[4.13属性访问](https://github.com/Microsoft/TypeScript/blob/1db4f96fd14fc3de5ae3704e925afd6474cfb8f5/doc/spec.md#4.13) (4认同)