In Google Closure-Compiler können Sie ein generisches verfeinern, indem Sie typeof oder instanceof tun. Zum Beispiel, hier nehme ich eine generische und behandeln sie wie ein Objekt:Veredelung generischer Typ in Typoskript
/**
* @param {T} obj
* @return {T}
* @template T
*/
function cloneIfObject(obj) {
if (typeof obj === 'object') {
return objectClone(obj);
}
return obj;
}
/**
* Stub function that only accepts object type
*
* @param {!Object} obj
* @return {!Object}
*/
function objectClone(obj) {
return obj; //Pretend to clone
}
ich dies in Typoskript versuchte Umsetzung, aber ich bin nicht in der Lage es wie ein Objekt zu behandeln.
function cloneIfObject<T>(obj: T) {
if (typeof obj === 'object') {
return { ...obj }; //Error: Spread types may only be created from object types.
}
if (obj instanceof Object) {
return { ...obj }; //Error: Spread types may only be created from object types.
}
return obj;
}
Haben Sie versucht, eine Besetzung hinzuzufügen? wie '{...
@ A.Akram Die Besetzung immer noch nicht 'Type‚{}‘ist nicht übertragbar‚sind Sie T'.' eingeben richtig, dass 'Object.assign' die gleiche wie Spread ist. Ich denke 'Object.assign ({},
Eine generische Funktion, die nicht das Argument des generischen Typs verwendet, groß – Dummy