TinyType
The TinyType abstract class should be used as a base class for your own Tiny Types.
If you want the Tiny Type to wrap a single value use the TinyTypeOf instead as it will save you some keystrokes.
Example:
class FirstName extends TinyTypeOf<string>() {}
class LastName extends TinyTypeOf<string>() {}
class Age extends TinyTypeOf<number>() {}
class Person extends TinyType {
constructor(public readonly firstName: FirstName,
public readonly lastName: LastName,
public readonly age: Age,
) {
super();
}
}
Test:
- TinyType
- TinyType wrapping a single value definition
- TinyType wrapping a single value de-serialisation
- when working with TinyTypes
- TinyType wrapping a single value definition needs to extend the TinyType for types with more than one value
- TinyType wrapping a single value definition can be mixed and matched
Method Summary
Public Methods | ||
public |
Compares two tiny types by value |
|
public |
toJSON(): JSONValue Serialises the object to a JSON representation. |
|
public |
Serialises the object to its string representation |
Public Methods
public equals(another: TinyType): boolean source
Compares two tiny types by value
Params:
Name | Type | Attribute | Description |
another | TinyType |
Example:
class Id extends TinyTypeOf<string>() {}
const id = new Id(`3cc0852d-fda7-4f61-874e-0cfadbd6182a`);
id.equals(id) === true
class FirstName extends TinyTypeOf<string>() {}
class LastName extends TinyTypeOf<string>() {}
class Age extends TinyTypeOf<number>() {}
class Person extends TinyType {
constructor(public readonly firstName: FirstName,
public readonly lastName: LastName,
public readonly age: Age,
) {
super();
}
}
const p1 = new Person(new FirstName('John'), new LastName('Smith'), new Age(42)),
p2 = new Person(new FirstName('John'), new LastName('Smith'), new Age(42));
p1.equals(p2) === true
public toJSON(): JSONValue source
Serialises the object to a JSON representation.
Return:
JSONValue |
Example:
class FirstName extends TinyTypeOf<string>() {}
const name = new FirstName('Jan');
name.toJSON() === 'Jan'
class FirstName extends TinyTypeOf<string>() {}
class LastName extends TinyTypeOf<string>() {}
class Age extends TinyTypeOf<number>() {}
class Person extends TinyType {
constructor(public readonly firstName: FirstName,
public readonly lastName: LastName,
public readonly age: Age,
) {
super();
}
}
const person = new Person(new FirstName('John'), new LastName('Smith'), new Age(42)),
person.toJSON() === { firstName: 'John', lastName: 'Smith', age: 42 }