当前位置:首页 » 《随便一记》 » 正文

初学者这样玩 TypeScript,迟早进大厂系列(第九期)_李南江

6 人参与  2021年11月19日 08:43  分类 : 《随便一记》  评论

点击全文阅读


极客江南: 一个对开发技术特别执着的程序员,对移动开发有着独到的见解和深入的研究,有着多年的iOS、Android、HTML5开发经验,对NativeApp、HybridApp、WebApp开发有着独到的见解和深入的研究, 除此之外还精通 JavaScript、AngularJS、 NodeJS 、Ajax、jQuery、Cordova、React Native等多种Web前端技术及Java、PHP等服务端技术。

初学者玩转 TypeScript系列,总计 10 期,本文为第 9 期,点赞、收藏、评论、关注、三连支持!

一期知识点击这里

二期知识点击这里

三期知识点击这里

四期知识点击这里

五期知识点击这里

六期知识点击这里

七期知识点击这里

八期知识点击这里

九期目录

        • 1.访问器装饰器
        • 2. 属性装饰器
        • 3. 参数装饰器

对于初学者来说,学习编程最害怕的就是,

那么,Typescript 是不是很难?

首先,我可以肯定地告诉你,你的焦虑是多余的。新手对学习新技术有很强的排斥心理,主要是因为基础不够扎实,然后自信心不够强。

1.访问器装饰器

/*
1.访问器装饰器
- 访问器装饰器声明在一个访问器的声明之前(紧靠着访问器声明)。
访问器装饰器应用于访问器的 属性描述符并且可以用来监视,修改或替换一个访问器的定义

- 访问器装饰器表达式会在运行时当作函数被调用,传入下列3个参数:
    + 对于静态成员来说是类的构造函数,对于实例成员是类的原型对象。
    + 成员的名字。
    + 成员的属性描述符。

- 注意: 
TypeScript不允许同时装饰一个成员的get和set访问器。
取而代之的是,一个成员的所有装饰的必须应用在文档顺序的第一个访问器上
* */

function test(target: any, propertyKey: string, descriptor: PropertyDescriptor) {
    // console.log(target);
    // console.log(propertyKey);
    // console.log(descriptor);
    descriptor.set = (value:string)=>{
        target.myName = value;
    }
    descriptor.get = ():string=>{
        return target.myName;
    }
}
class Person {
    private _name:string; // lnj
    constructor(name:string){
        this._name = name;
    }
    @test
    get name():string{
        return this._name;
    }
    set name(value:string){
        this._name = value;
    }
    
}
let p = new Person('lnj');
p.name = 'zs';
console.log(p.name);
console.log(p);


2. 属性装饰器

/*
1.属性装饰器
- 属性装饰器写在一个属性声明之前(紧靠着属性声明)
- 属性装饰器表达式会在运行时当作函数被调用,传入下列2个参数:
    + 对于静态属性来说就是当前的类, 对于实例属性来说就是当前实例
    + 成员的名字。
* */
function test(target:any, proptyName:string) {
    console.log(target);
    console.log(proptyName);
    target[proptyName] = 'lnj';
}
class Person {
    // @test
    static age:number;
    @test
    name?:string;
}
let p = new Person();
console.log(p);

3. 参数装饰器

/*
1.参数装饰器
- 参数装饰器写在一个参数声明之前(紧靠着参数声明)。
- 参数装饰器表达式会在运行时当作函数被调用,传入下列3个参数:
    + 对于静态成员来说是当前的类,对于实例成员是当前实例。
    + 参数所在的方法名称。
    + 参数在参数列表中的索引。
* */
/*
其它
属性装饰器,参数装饰器最常见的应用场景就是配合元数据(reflect-metadata),
在不改变原有结构的同时添加一些额外的信息
但是元数据目前也是在提案中, 也还没有纳入正式的标准
所以对于装饰器而言, 我们只需要了解即可,
因为提案中的所有内容将来都是有可能被修改的
因为提案中的所有内容目前都有兼容性问题
* */
function test(target:any, proptyName:string, index:number) {
    console.log(target);
    console.log(proptyName);
    console.log(index);
}
class Person {
    say(age:number,@test name:string):void{

    }
}




码字不易,在线求个三连支持。

点击下方卡片,关注 回复 书籍 获取保姆级编程电子书


点击全文阅读


本文链接:http://zhangshiyu.com/post/31022.html

装饰  参数  属性  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1