本文整理匯總了TypeScript中@glimmer/runtime.curry函數的典型用法代碼示例。如果您正苦於以下問題:TypeScript curry函數的具體用法?TypeScript curry怎麽用?TypeScript curry使用的例子?那麽, 這裏精選的函數代碼示例或許可以為您提供幫助。
在下文中一共展示了curry函數的5個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的TypeScript代碼示例。
示例1: renderHelper
renderHelper = function renderHelper(
vm: VM,
args: Arguments
): VersionedPathReference<CurriedComponentDefinition | null> {
let env = vm.env as Environment;
let nameRef = args.positional.at(0);
assert(
`The first argument of {{render}} must be quoted, e.g. {{render "sidebar"}}.`,
isConst(nameRef)
);
// tslint:disable-next-line:max-line-length
assert(
`The second argument of {{render}} must be a path, e.g. {{render "post" post}}.`,
args.positional.length === 1 || !isConst(args.positional.at(1))
);
let templateName = nameRef.value() as string;
// tslint:disable-next-line:max-line-length
assert(
`You used \`{{render '${templateName}'}}\`, but '${templateName}' can not be found as a template.`,
env.owner.hasRegistration(`template:${templateName}`)
);
let template = env.owner.lookup<OwnedTemplate>(`template:${templateName}`);
let controllerName: string;
if (args.named.has('controller')) {
let controllerNameRef = args.named.get('controller');
// tslint:disable-next-line:max-line-length
assert(
`The controller argument for {{render}} must be quoted, e.g. {{render "sidebar" controller="foo"}}.`,
isConst(controllerNameRef)
);
// TODO should be ensuring this to string here
controllerName = controllerNameRef.value() as string;
// tslint:disable-next-line:max-line-length
assert(
`The controller name you supplied '${controllerName}' did not resolve to a controller.`,
env.owner.hasRegistration(`controller:${controllerName}`)
);
} else {
controllerName = templateName;
}
if (args.positional.length === 1) {
let def = new RenderDefinition(controllerName, template, SINGLETON_RENDER_MANAGER);
return UnboundReference.create(curry(def));
} else {
let def = new RenderDefinition(controllerName, template, NON_SINGLETON_RENDER_MANAGER);
let captured = args.capture();
return UnboundReference.create(curry(def, captured));
}
};
示例2: value
value() {
let { env, nameRef, modelRef } = this;
let name = nameRef.value();
if (typeof name === 'string') {
if (this._lastName === name) {
return this._lastDef;
}
assert(
`You used \`{{mount '${name}'}}\`, but the engine '${name}' can not be found.`,
env.owner.hasRegistration(`engine:${name}`)
);
if (!env.owner.hasRegistration(`engine:${name}`)) {
return null;
}
this._lastName = name;
this._lastDef = curry(new MountDefinition(name, modelRef));
return this._lastDef;
} else {
assert(
`Invalid engine name '${name}' specified, engine name must be either a string, null or undefined.`,
name === null || name === undefined
);
this._lastDef = null;
this._lastName = null;
return null;
}
}
示例3: value
value(): CurriedComponentDefinition | null {
let state = stateFor(this.outletRef);
if (validate(state, this.lastState)) {
return this.definition;
}
this.lastState = state;
let definition = null;
if (state !== null) {
definition = curry(new OutletComponentDefinition(state));
}
return (this.definition = definition);
}
示例4: appendTo
appendTo(view: Component, target: Simple.Element) {
let definition = new RootComponentDefinition(view);
this._appendDefinition(view, curry(definition), target);
}
示例5: appendOutletView
appendOutletView(view: OutletView, target: Simple.Element) {
let definition = createRootOutlet(view);
this._appendDefinition(view, curry(definition), target);
}