proto-decorator

Sets a value on a class' prototype

Proto Decorator

A decorator for setting a property on the class prototype (previously known as typescript-proto-decorator).

Compatibility

  • Typescript - full
  • Spec-compliant decorator proposal - full
  • Babel (current proposal) - full
  • Babel (legacy) - full

API

/**
 * Sets a value on the class' prototype
 * @param value The value to set
 * @param options Options to set. Defaults to configurable, enumerable and writable.
 */
function Proto(value: any, options?: Pick<PropertyDescriptor, 'configurable' | 'enumerable' | 'writable'>): PropertyDecorator;

Usage

import {Proto} from 'proto-decorator';

class MyClass {
  
  // set MyClass.prototype.foo = 'bar'
  @Proto('bar')
  public foo: string;
  
  // set MyClass.prototype.count = 1; It will be non-enumerable, non-writable.
  @Proto(1, {writable: false, enumerable: false})
  public readonly count: number;
}

Shortcuts

  • You can use @Proto.immutable as a shortcut for {configurable: false, enumerable: true, writable: false}.
  • You can use @Proto.hidden as a shortcut for {configurable: true, enumerable: false, writable: true}.
  • You can use @Proto.immutableHidden as a shortcut for {configurable: false, enumerable: false, writable: false}.

The UMD global name is ProtoDecorator.

HomePage

https://github.com/Alorel/typescript-proto-decorator

Repository

git+https://github.com/Alorel/typescript-proto-decorator.git