字面

2017-05-28 25 views
0

从说明书中所得到的对象的类型:字面

当文字对象被上下文由一个类型,其包括字符串索引签名,所得到的类型的对象文本的类型包括与联合类型的字符串索引签名文字类型的对象声明的属性,或者如果文字的对象为空未定义类型

是什么意思 - 所导致的对象字面的类型?

让我们说我们有

var a:{[key:string]:any} = {a:1,b:"2"}; 

a已键入{[key:string]:any}

在哪里得到的类型的对象在此声明的文字?

是否有代码中的任何地方我可以看到对象文字的行动类型?

+0

看起来它是关于该类型'this'在对象字面定义,如果有任何的方法。如果是这样,它已经过时了,因为[this在对象字面量方法中被推断为'any'](https://github.com/Microsoft/TypeScript/pull/8389)。该规范自1.8以来未见任何提交。 – artem

回答

1

在代码中有什么地方可以看到结果类型的对象文字在行动中吗?

下面的代码示例

declare const str: 'a' | 'b'; 
let foo = { a: 1, b: "2" }[str]; // typeof foo is string | number 
+0

其中是在右手表达式中包含字符串索引签名的类型? – Oleg

+0

顺便说一下,从规范:如果索引是一个字符串文字或数字文字和对象具有明确的属性(第3.11.1)与该文字给出的名称(在数字文字的情况下转换为其字符串表示形式),属性访问是该属性的类型。如果'str'是**字符串literal **,则'foo'具有不是'string | number'的明显成员类型。但是'str'是union,spec不考虑这种情况。 – Oleg