zoukankan      html  css  js  c++  java
  • [TypeScript] Understanding Decorators

    Decorators are a feature of TypeScript that are becoming more and more common in many major libraries. This lesson walks you through what decorators are and how to create your own.

    Nomarl way to decorate a object :

    const Person = {name: 'John'};
    
    function addAge(age){
        return function(person){
            return {
                age,
                name: person.name
            }
        }
    }
    
    const john = addAge(30)(Person);
    console.log(john); // {name: "John", age: 30}

    In Typescript, we can enable "experimentaDecorators", which is ES7 feature:

    {
        "compilerOptions": {
            "rootDir": "src",
            "module": "commonjs",
            "target": "es5",
            "noImplicitAny": false,
            "sourceMap": false,
            "outDir": "./dist",
            "noEmitOnError": true,
            "experimentalDecorators": true
        },
        "exclude": [
            "node_modules",
            "typings/main",
            "typings/main.d.ts"
        ]
    }
    function addAge(age){
        return function(targetClass){
            return class{
                age = age;
                name = new targetClass().name;
            }
        }
    }
    
    @addAge(30)
    class Person{
        name = "Johnn";
    }
    
    const john = new Person();
    console.log(john); // {name: "Johnn", age: 30}

    As before we create addAge function as decorator, different from before, it return class, because we want to decorate Person class.

    After the decorator, we will have age prop on the person class.

  • 相关阅读:
    C#细说多线程(下)
    C#细说多线程(上)
    C#:进程、线程、应用程序域(AppDomain)与上下文分析
    C#委托与事件
    SQL Server 查询优化器运行方式
    SQL优化之索引分析
    C#反射机制
    Sql注入
    JAVA内存泄漏解决办法
    spring4声明式事务—02 xml配置方式
  • 原文地址:https://www.cnblogs.com/Answer1215/p/5573975.html
Copyright © 2011-2022 走看看