/// import { recipe, UI } from "commontools"; interface State { firstName: string; lastName: string; title: string; message: string; count: number; } export default recipe("StringOperations", (state) => { return { [UI]: (

String Concatenation

{state.title + ": " + state.firstName + " " + state.lastName}

{state.firstName + state.lastName}

{"Hello, " + state.firstName + "!"}

Template Literals

{`Welcome, ${state.firstName}!`}

{`Full name: ${state.firstName} ${state.lastName}`}

{`${state.title}: ${state.firstName} ${state.lastName}`}

String Methods

Uppercase: {state.firstName.toUpperCase()}

Lowercase: {state.title.toLowerCase()}

Length: {state.message.length}

Substring: {state.message.substring(0, 5)}

Mixed String and Number

{state.firstName + " has " + state.count + " items"}

{`${state.firstName} has ${state.count} items`}

Count as string: {"Count: " + state.count}

), }; });