美文网首页
core-decorators

core-decorators

作者: VIAE | 来源:发表于2019-12-17 15:41 被阅读0次

    core-decorators 提供修饰器:
    @autobind 使得方法中的this对象,绑定原始对象。

    import { autobind } from 'core-decorators';
    class Person {
    @autobind
    getPerson() {
    return this;
    }
    }
    let person = new Person();
    let getPerson = person.getPerson;
    getPerson() === person;
    // tru
    

    @readonly 使得属性或方法不可写。

    import { readonly } from 'core-decorators';
    class Meal {
    @readonly
    entree = 'steak';
    }
    var dinner = new Meal();
    dinner.entree = 'salmon';
    // Cannot assign to read only property 'entree' of [object Object]
    

    @override 检查子类的方法,是否正确覆盖了父类的同名方法,如果不正确会报错。

    import { override } from 'core-decorators';
    class Parent {
    speak(first, second) {}
    }
    class Child extends Parent {
    @override
    speak() {}
    // SyntaxError: Child#speak() does not properly override Parent#speak(first, second)
    }
    // or
    class Child extends Parent {
    @override
    speaks() {}
    // SyntaxError: No descriptor matching Child#speaks() was found on the prototype chain.
    //
    // Did you mean "speak"?
    }
    

    @deprecate (别名@deprecated) 在控制台显示一条警告,表示该方法将废除。

    import { deprecate } from 'core-decorators';
    class Person {
    @deprecate
    facepalm() {}
    @deprecate('We stopped facepalming')
    facepalmHard() {}
    @deprecate('We stopped facepalming', { url: 'http://knowyourmeme.com/memes/facepalm' })
    facepalmHarder() {}
    }
    let person = new Person();
    person.facepalm();
    // DEPRECATION Person#facepalm: This function will be removed in future versions.
    person.facepalmHard();
    // DEPRECATION Person#facepalmHard: We stopped facepalming
    person.facepalmHarder();
    // DEPRECATION Person#facepalmHarder: We stopped facepalming
    //
    // See http://knowyourmeme.com/memes/facepalm for more details.
    //
    

    @suppressWarnings 抑制deprecated修饰器导致的console.warn()调用。但是,异步代码发出的调用除外。

    import { suppressWarnings } from 'core-decorators';
    class Person {
    @deprecated
    facepalm() {}
    @suppressWarnings
    facepalmWithoutWarning() {
    this.facepalm();
    }
    }
    let person = new Person();
    person.facepalmWithoutWarning();
    // no warning is logged
    

    文章来源于http://www.waibo.wang/bible/es6/html/21/21.4.html

    相关文章

      网友评论

          本文标题:core-decorators

          本文链接:https://www.haomeiwen.com/subject/stgsnctx.html