在 TypeScript 对象中键入任意不带引号的属性名称?

Jep*_*ron 2 typescript

我希望能够将对象/字典中的值引用为myDictionary.SOME_VALUE. 是否可以通过不需要我为提前列出每个属性值的对象指定类型的方式来完成?例如,如果这是一个带有字符串键的字典,我知道语法是

var myDictionary : {[id:string]:number} = {'a':1, 'b':2}
Run Code Online (Sandbox Code Playgroud)

有没有一种方法可以定义允许我执行以下操作的类型

var myDictionary = {a:1, b:2}
Run Code Online (Sandbox Code Playgroud)

对于任意不带引号的属性名称,不需要显式接口/类型定义(例如type myDictType = {a:number, b:number}:)?

Ale*_*exG 5

var myDictionary : {[id:string]:number} = {a:1, b:2} compiles just fine.
Run Code Online (Sandbox Code Playgroud)

myDictionary.a 事实并非如此,因为打字稿创建者希望字典访问看起来就像您正在使用动态密钥一样。

不幸的是,唯一可以让您在没有括号的情况下访问任意属性的类型......是any不幸的。