本文整理匯總了TypeScript中@ember/-internals/utils.wrap函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript wrap函數的具體用法?TypeScript wrap怎麽用?TypeScript wrap使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了wrap函數的3個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: giveMethodSuper
function giveMethodSuper(
obj: object,
key: string,
method: Function,
values: { [key: string]: any },
descs: { [key: string]: any }
) {
// Methods overwrite computed properties, and do not call super to them.
if (descs[key] !== undefined) {
return method;
}
// Find the original method in a parent mixin
let superMethod = values[key];
// If we didn't find the original value in a parent mixin, find it in
// the original object
if (superMethod === undefined && descriptorFor(obj, key) === undefined) {
superMethod = obj[key];
}
// Only wrap the new method if the original method was a function
if (typeof superMethod === 'function') {
return wrap(method, superMethod);
}
return method;
}
示例2: giveDescriptorSuper
function giveDescriptorSuper(
meta: Meta,
key: string,
property: ComputedProperty,
values: { [key: string]: any },
descs: { [key: string]: any },
base: object
): ComputedProperty {
let superProperty;
// Computed properties override methods, and do not call super to them
if (values[key] === undefined) {
// Find the original descriptor in a parent mixin
superProperty = descs[key];
}
// If we didn't find the original descriptor in a parent mixin, find
// it on the original object.
if (!superProperty) {
superProperty = descriptorFor(base, key, meta);
}
if (superProperty === undefined || !(superProperty instanceof ComputedProperty)) {
return property;
}
// Since multiple mixins may inherit from the same parent, we need
// to clone the computed property so that other mixins do not receive
// the wrapped version.
property = Object.create(property);
property._getter = wrap(property._getter, superProperty._getter) as ComputedPropertyGetter;
if (superProperty._setter) {
if (property._setter) {
property._setter = wrap(property._setter, superProperty._setter) as ComputedPropertySetter;
} else {
property._setter = superProperty._setter;
}
}
return property;
}
示例3: giveDecoratorSuper
function giveDecoratorSuper(
meta: Meta,
key: string,
decorator: ComputedDecorator,
values: { [key: string]: any },
descs: { [key: string]: any },
base: object
): ComputedDecorator {
let property = descriptorForDecorator(decorator)!;
let superProperty;
if (!(property instanceof ComputedProperty) || property._getter === undefined) {
return decorator;
}
// Computed properties override methods, and do not call super to them
if (values[key] === undefined) {
// Find the original descriptor in a parent mixin
superProperty = descriptorForDecorator(descs[key]);
}
// If we didn't find the original descriptor in a parent mixin, find
// it on the original object.
if (!superProperty) {
superProperty = descriptorForProperty(base, key, meta);
}
if (superProperty === undefined || !(superProperty instanceof ComputedProperty)) {
return decorator;
}
let get = wrap(property._getter!, superProperty._getter!) as ComputedPropertyGetter;
let set;
if (superProperty._setter) {
if (property._setter) {
set = wrap(property._setter, superProperty._setter) as ComputedPropertySetter;
} else {
// If the super property has a setter, we default to using it no matter what.
// This is clearly very broken and weird, but it's what was here so we have
// to keep it until the next major at least.
//
// TODO: Add a deprecation here.
set = superProperty._setter;
}
} else {
set = property._setter;
}
// only create a new CP if we must
if (get !== property._getter || set !== property._setter) {
// Since multiple mixins may inherit from the same parent, we need
// to clone the computed property so that other mixins do not receive
// the wrapped version.
let newProperty = Object.create(property);
newProperty._getter = get;
newProperty._setter = set;
return makeComputedDecorator(newProperty, ComputedProperty) as ComputedDecorator;
}
return decorator;
}