4. 类型字面量
JavaScript 中的对象字面量
对象字面量 (Object literals)是 JavaScript 中的一个生成对象的功能。
对象字面值是封闭在花括号对({})中的一个对象的零个或多个"属性名-值"对的(元素)列表。
我们日常使用的是 ES 2015 开始引入的增强的对象字面量 (Enhanced Object literals)。
下面是一个例子:
const obj = {
0x1: 'foo',
bar: 114514,
"baz": [1, 2, {}],
// __proto_
__proto__: theProtoObj,
// Shorthand for ‘handler: handler’
handler,
// Methods
toString() {
// Super calls
return "d " + super.toString();
},
// Property of arrow function
arrowFunctionProperty: () => 'arrowFunctionProperty',
// Computed (dynamic) property names
[ 'prop_' + (() => 42)() ]: 42,
// Computed property names of Symbol
[Symbol.iterator]: '123',
};
我就不赘述语法了。就简单提一下,key 是 0x1 还是 0b1 还是 1,都相当于是 "1"。
key 可以是标识符(bar,arrowFunctionProperty, handler),字符串("baz"),数字(0x1),方括号括起来的计算出的值。Symbol 只可以放在方括号中括起来。
类型字面量
请注意一下,这里是说类型字面量(Type Literal),不是说字面量类型(Literal Type),这个名词的出处是 TypeScript 的源码,文档和很多教程里貌似都没有提这个名词,除了我在 tslint 中看到的这条规则。
毕竟本文本质