Um nur auf die coolen Antworten oben zu erweitern! Und für die Leute, die hier landen, während sie nach einer Teilversion suchen, die Fähigkeiten erfordert! Hier ein Ausschnitt, den ich gemacht habe!
PartialReq
Sie möchten einen Teil einer Schnittstelle haben, benötigen aber in der Zwischenzeit einige Felder! Hier, wie es gemacht wird
export type PartialReq<T, Keys extends keyof T = keyof T> =
Pick<Partial<T>, Exclude<keyof T, Keys>>
& {
[K in Keys]: T[K]
};
Verwenden Sie ein Beispiel
export interface CacheObj<SigType = any, ValType = any> {
cache: Map<SigType, ValType>,
insertionCallback: InsertionCallback<SigType, ValType>
}
export class OneFlexibleCache<SigType = any, ValType = any> {
private _cacheObj: CacheObj<SigType, ValType>;
constructor(
cacheObj: PartialReq<CacheObj<SigType, ValType>, 'insertionCallback'> // <-- here
// i used it
) {
cacheObj = cacheObj || {};
this._cacheObj = {
this._caches.set(
cacheSignature,
new OneFlexibleCache<InsertionSigType, InsertionValType>({
insertionCallback
})
);
Hier können Sie sehen, dass es perfekt funktioniert

Wenn das nicht zur Verfügung gestellt wird

UPDATE: Für die Verwendung, die ich oben angedeutet habe, hier eine bessere Antwort
Ich ging einfach zum Arzt und fand Omit .
https://www.typescriptlang.org/docs/handbook/utility-types.html#omittk
Ich bin gekommen, um es hinzuzufügen. Aber bevor ich es tue, habe ich gerade diese coole Antwort gesehen. Es deckt alles ab:
https://stackoverflow.com/a/48216010/7668448
Probieren Sie es einfach aus! Es zeigt, wie es für die verschiedenen Versionen von Typescript geht! Und um nicht zu wiederholen! Geh und überprüfe!