• TypeScript 装饰器实例


    const userInfo: any = undefined;
    
    class Test{
      getName() {
        return userInfo.name;
      }
      getAge() {
        return userInfo.age;
      }
    }
    
    const test = new Test();
    test.getName();
    这个例子运行的时候会报错,因为 name,age 不存在,userInfo 是 undefined,进行以下方式处理
     
    const userInfo: any = undefined;
    
    class Test{
      getName() {
        try {
          return userInfo.name;
        } catch (e) {
          console.log('userinfo.name 不存在')
        }
      }
      getAge() {
        try {
          return userInfo.info;
        } catch (e) {
          console.log('userinfo.info 不存在')
        }
      }
    }
    
    const test = new Test();
    test.getName();
    假设这里有很多getName,getAge 的方法,很多的 try...catch 代码会变得很长,我们用装饰器解决 try...catch 反复编写的问题
     
    const userInfo: any = undefined;
    
    function catchError(target: any, key: string, descriptor: PropertyDescriptor) {
      const fn = descriptor.value;
      descriptor.value = function () {
        try {
          fn();
        } catch (e) {
          console.log('userinfo 存在问题')
        }
      }
    }
    
    class Test{
      @catchError
      getName() {
       return userInfo.name;
      }
      @catchError
      getAge() {
       return userInfo.info;
      }
    }
    
    const test = new Test();
    test.getAge();
  • 相关阅读:
    [pycharm]远程调试服务器项目
    [Linux]防火墙关闭与开启
    [Linux]安装pyenv
    [Linux]ubuntu安装基本流程
    [python]html格式转md格式
    [python]目录及文件操作
    [Linux]安装node.js
    Linux基础
    爬虫基础(3)
    爬虫基础(2)
  • 原文地址:https://www.cnblogs.com/wzndkj/p/13488668.html
Copyright © 2020-2023  润新知