本文整理汇总了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;
}