¡Se extiende a las geniales respuestas anteriores! ¡Y para las personas que aterrizan aquí mientras buscan una versión parcial con la capacidad requerida! ¡Aquí un fragmento que hice para tomar!
PartialReq
Desea tener un Parcial de una interfaz, pero mientras tanto, ¡requiere algunos de los campos! Aquí como se hace
export type PartialReq<T, Keys extends keyof T = keyof T> =
Pick<Partial<T>, Exclude<keyof T, Keys>>
& {
[K in Keys]: T[K]
};
Ejemplo de uso
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
})
);
Aquí puedes ver que funciona perfectamente

Si el requerido no se proporciona

ACTUALIZACIÓN: Para el uso que implicaba anteriormente aquí, una mejor respuesta
Pasé por el doc y encontré a Omit .
https://www.typescriptlang.org/docs/handbook/utility-types.html#omittk
Vine a agregarlo. Pero antes de hacerlo, acabo de ver esta genial respuesta. Cubre todo:
https://stackoverflow.com/a/48216010/7668448
¡Solo compruébalo! ¡Muestra cómo hacerlo para todas las diferentes versiones de Typecript! ¡Y por no repetir! ¡Ve y comprueba!