almin / almin/ddd-base

Entity/ValueObject: receive Props Instead of Identifier

Aperta
#4 5 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Status: Proposal
Lingua principale
TypeScript
Stelle
77
Fork
7
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

I've noticed that I often write a entity like following:

```ts
export class HatebuIdentifier extends Identifier {}
export interface HatebuProps {
readonly id: HatebuIdentifier;
readonly bookmark: Bookmark;
}

export class Hatebu extends Entity implements HatebuProps {
readonly bookmark: Bookmark;

constructor(args: HatebuProps) {
super(args.id);
this.bookmark = args.bookmark;
}

get name() {
return this.id.toValue();
}

addBookmarkItems(bookmarkItems: BookmarkItem[]) {
return new Hatebu({
...(this as HatebuProps),
bookmark: this.bookmark.addBookmarkItems(bookmarkItems)
});
}

updateBookmarkItems(bookmarkItems: BookmarkItem[]) {
return new Hatebu({
...(this as HatebuProps),
bookmark: this.bookmark.updateBookmarkItems(bookmarkItems)
});
}
}
```

This `Hatebu` entity has id and Props type.
We can use `Props` type insteadof `Id`.
Becaseue, Alwasys `Props` includes `id`.

## Props

- We can realize mixin meaningful #5
- `Copyable` insterface just use `Props` type
- It is similar with React https://github.com/DefinitelyTyped/DefinitelyTyped/blob/master/types/react/index.d.ts#L287-L288

## Cons

- `id` is fixed name
- Always arguments is object

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.