當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript Op.opMap函數代碼示例

本文整理匯總了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))
		}
	})
開發者ID:mason-lang,項目名稱:mason-lang.github.io,代碼行數:35,代碼來源:transpileFun.ts

示例2: opIf

	return opIf(!localDeclare.isLazy, () =>
		opMap(localDeclare.opType, type =>
			new ExpressionStatement(msCall(
				'checkInstance',
				transpileVal(type),
				accessLocalDeclare(localDeclare),
				new LiteralString(localDeclare.name)))))
開發者ID:mason-lang,項目名稱:mason-lang.github.io,代碼行數:7,代碼來源:transpileLocals.ts

示例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)
}
開發者ID:mason-lang,項目名稱:mason-lang.github.io,代碼行數:8,代碼來源:transpileYieldLike.ts

示例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, () => [])
	}
}
開發者ID:mason-lang,項目名稱:mason-lang.github.io,代碼行數:14,代碼來源:parseClass.ts

示例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))
}
開發者ID:mason-lang,項目名稱:mason-lang.github.io,代碼行數:4,代碼來源:Keyword.ts

示例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)
}
開發者ID:mason-lang,項目名稱:mason-lang.github.io,代碼行數:6,代碼來源:parseCase.ts


注:本文中的op/Op.opMap函數示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。