本文整理汇总了TypeScript中op/Op.opMap函数的典型用法代码示例。如果您正苦于以下问题:TypeScript opMap函数的具体用法?TypeScript opMap怎么用?TypeScript opMap使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了opMap函数的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的TypeScript代码示例。
示例1: withFunKind
return withFunKind(kind, () => {
// TODO:ES6 use `...`f
const nArgs = new LiteralNumber(args.length)
const opDeclareRest = opMap(opRestArg, rest =>
makeDeclare(rest, new CallExpression(arraySliceCall, [idArguments, nArgs])))
const argChecks = opIf(compileOptions.checks, () =>
flatMapOps(args, opTypeCheckForLocalDeclare))
const opDeclareThisAst = opIf(opDeclareThis !== null && !dontDeclareThis, () =>
declareLexicalThis)
const lead = cat(opDeclareRest, opDeclareThisAst, argChecks, leadStatements)
const body = () => transpileBlock(block, {lead, opReturnType})
const argAsts = args.map(transpileLocalDeclare)
const id = opMap(verifyResults.opName(_), identifier)
switch (kind) {
case Funs.Async: {
const plainBody = transpileBlock(block, {opReturnType})
const genFunc = new FunctionExpression(null, [], plainBody, {generator: true})
const ret = new ReturnStatement(msCall('async', genFunc))
return new FunctionExpression(id, argAsts, new BlockStatement(cat(lead, ret)))
}
case Funs.Generator:
return new FunctionExpression(id, argAsts, body(), {generator: true})
case Funs.Plain:
// TODO:ES6 Should be able to use rest args in arrow function
return id === null && opDeclareThis === null && opDeclareRest === null ?
new ArrowFunctionExpression(argAsts, body()) :
new FunctionExpression(id, argAsts, body())
default:
throw new Error(String(kind))
}
})
示例2: opIf
return opIf(!localDeclare.isLazy, () =>
opMap(localDeclare.opType, type =>
new ExpressionStatement(msCall(
'checkInstance',
transpileVal(type),
accessLocalDeclare(localDeclare),
new LiteralString(localDeclare.name)))))
示例3: transpileYieldLikeNoLoc
export function transpileYieldLikeNoLoc(_: YieldLike): Expression {
if (_ instanceof Yield)
return new YieldExpression(opMap(_.opValue, transpileVal))
else if (_ instanceof YieldTo)
return new YieldDelegateExpression(transpileVal(_.value))
else
throw new Error(_.constructor.name)
}
示例4: parseClassHeader
function parseClassHeader(tokens: Tokens)
: {opFields: Op<Array<Field>>, opSuperClass: Op<Val>, traits: Array<Val>} {
const [fieldsTokens, [extendsTokens, traitTokens]] =
tokens.getKeywordSections(Kw.Extends, Kw.Trait)
return {
opFields: opIf(!fieldsTokens.isEmpty(), () => fieldsTokens.map(_ => {
const {name, opType, kind} = parseLocalParts(_)
check(kind === LocalDeclares.Eager, _.loc, _ => _.todoLazyField)
return new Field(_.loc, name, opType)
})),
opSuperClass: opMap(extendsTokens, parseExpr),
traits: caseOp(traitTokens, parseExprParts, () => [])
}
}
示例5: opKeywordFromName
export function opKeywordFromName(loc: Loc, name: string): Op<Keyword> {
// I tried a switch statement, but using a map of closures was actually faster.
return opMap(nameToKeywordCreator.get(name), _ => _(loc))
}
示例6: parseCase
export default function parseCase(tokens: Tokens): Case {
const [before, block] = beforeAndBlock(tokens)
const opCased = opMap(opParseExpr(before), _ => AssignSingle.focus(_.loc, _))
const {parts, opElse} = parseCaseParts(block)
return new Case(tokens.loc, opCased, parts, opElse)
}