元数据api存在于reflect-matadata包中,是es7特性之一,用来在对象之外存储它上面的相关元数据,其中Reflect命名空间以前就存在,元数据api只是将方法注册到Reflect命名空间上,Reflect.ts:
/*Reflect命名空间 */
namespace Reflect {
/*存储数据结构,其实是个对象,而不是Map*/
type HashMap<V> = Record<string, V>;
/*类似Byuffer,本质上是个字节数组*/
interface BufferLike {
/*根据偏移获取字节 */
[offset: number]: number;
/*字节数组长度 */
length: number;
}
/*generate函数结果迭代器 */
type IteratorResult<T> = { value: T, done: false } | { value: never, done: true };
/*迭代器接口 */
interface Iterator<T> {
next(value?: any): IteratorResult<T>;
throw?(value: any): IteratorResult<T>;