Ich habe eine grundlegende generische Klasse BaseModel
und eine Reihe von Unterklassen, die die Modelle zu meiner Lösung sind. Was ich tun möchte ist so etwas wie:Definieren einer Teilmenge der Klasse als Schnittstelle
export default class Person extends Model {
public firstName: string;
public lastName: string;
public age: number;
protected modelName: 'person';
}
Und in der Model
Klasse sagen wir, wir haben:
export default abstract class Model {
public lastUpdated: string;
public createdAt: string;
protected abstract modelName: string;
// Public API
public update(key, payload: any) { ... }
public remove(key) { ... }
}
Also, was ich möchte zur Entwurfszeit bereitstellen können, ist eine Schnittstelle, die alle öffentlichen Eigenschaften besitzt, aber die API-Funktionen ausschließt. Ist das in Typoskript möglich?
p.s. Ich erwäge auch die Möglichkeit, die experimentellen Dekorateure der Verwendung Funktion, so dass das obige Person Modell aussehen könnte:
export default class Person extends Model {
@property firstName: string;
@property lastName: string;
@property age: number;
protected modelName: 'person';
}
nicht sicher, ob dies keine zusätzliche Möglichkeiten bietet mein Ziel als Dekorateure in JS ist Neuland zu erreichen, die für mich.
Ja, das ist wahr, aber was ich hoffe, ist nicht die Schnittstelle _and_ definieren müssen dann die öffentlichen Eigenschaften der Klasse hinzufügen. Scheint so etwas wie ein TS-Zupfen/Pick/oder gemappte Tasten könnten dies erreichen? Es wäre sehr möglich, auch eine Schnittstelle für die API zu definieren, und dann kann ich die API von der öffentlichen Schnittstelle ausschließen? – ken