Skip to content

Commit 5a46c63

Browse files
committed
✨ 装饰器完结
1 parent be5cbf4 commit 5a46c63

File tree

1 file changed

+24
-1
lines changed

1 file changed

+24
-1
lines changed

docs/typescript/decorator.md

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -290,6 +290,29 @@ after-- - oneDecorator;
290290

291291
## Reflect Metadata
292292

293-
```
293+
`es7`的一个提案,主要作用:在声明的时候添加和读取元数据。
294+
295+
使用之前,`yarn add reflect-metadata -S`并且在`tsconfig.json`中配置`emitDecoratorMetadata: true`
296+
297+
```javascript
298+
// 使用ts-node编译时,需要配置"module": "commonjs"
299+
// 否则原有基于rollup配置,"module": "ESNext",需要使用(Reflect as any).defineMetadata
300+
import 'reflect-metadata';
301+
302+
const user = {
303+
name: 'Rain',
304+
};
305+
306+
Reflect.defineMetadata('data', 'test', user);
307+
308+
console.log(Reflect.getMetadata('data', user)); // test
309+
310+
@Reflect.metadata('username', 'rain')
311+
class Person {
312+
@Reflect.metadata('age', 12)
313+
getUserAge() {}
314+
}
294315

316+
console.log(Reflect.getMetadata('username', Person)); // rain
317+
console.log(Reflect.getMetadata('age', Person.prototype, 'getUserAge')); // 12
295318
```

0 commit comments

Comments
 (0)