Functions
Default Parameters
Default parameter values let a function fill in a common value when the caller omits it.
default parameter
A parameter with `= value` uses that value when no argument is provided.
Default Parameters
defaults.ts
Replay: real traced execution (multi-file project)
function makeLabel(text: string, prefix: string = "item"): string {
return `${prefix}: ${text}`;
}
const labelText: string = "notebook";
const prefixText: string = "sku";
const defaultLabel: string = makeLabel(labelText);
const customLabel: string = makeLabel(labelText, prefixText);
console.log(defaultLabel);
console.log(customLabel);
function makeLabel(text: string, prefix: string = "item"): string {
return `${prefix}: ${text}`;
}
const labelText: string = "marker";
const prefixText: string = "sku";
const defaultLabel: string = makeLabel(labelText);
const customLabel: string = makeLabel(labelText, prefixText);
console.log(defaultLabel);
console.log(customLabel);
function makeLabel(text: string, prefix: string = "item"): string {
return `${prefix}: ${text}`;
}
const labelText: string = "eraser";
const prefixText: string = "sku";
const defaultLabel: string = makeLabel(labelText);
const customLabel: string = makeLabel(labelText, prefixText);
console.log(defaultLabel);
console.log(customLabel);
function makeLabel(text: string, prefix: string = "item"): string {
return `${prefix}: ${text}`;
}
const labelText: string = "notebook";
const prefixText: string = "tag";
const defaultLabel: string = makeLabel(labelText);
const customLabel: string = makeLabel(labelText, prefixText);
console.log(defaultLabel);
console.log(customLabel);
function makeLabel(text: string, prefix: string = "item"): string {
return `${prefix}: ${text}`;
}
const labelText: string = "notebook";
const prefixText: string = "bin";
const defaultLabel: string = makeLabel(labelText);
const customLabel: string = makeLabel(labelText, prefixText);
console.log(defaultLabel);
console.log(customLabel);
labelText ← notebook, prefixText ← sku
2 return `${prefix}: ${text}`;3}45const labelText→ notebook: string = "notebook"; //@labelText="marker", "eraser"6const prefixText→ sku: string = "sku"; //@prefixText="tag", "bin"78const defaultLabel: string = makeLabel(labelTextnotebook);9const customLabel: string = makeLabel(labelText, prefixText);function makeLabel(text: string, prefix: string = "item"): string
pass 1 of 21function makeLabel(textnotebook: string, prefixitem: string = "item"): string {2 return `${prefixitem}: ${textnotebook}`;3}defaultLabel ← item: notebook
5const labelText: string = "notebook"; //@labelText="marker", "eraser"6const prefixText: string = "sku"; //@prefixText="tag", "bin"78const defaultLabel→ item: notebook: string = makeLabel(labelTextnotebook);9const customLabel: string = makeLabel(labelTextnotebook, prefixTextsku);function makeLabel(text: string, prefix: string = "item"): string
pass 2 of 21function makeLabel(textnotebook: string, prefixsku: string = "item"): string {2 return `${prefixsku}: ${textnotebook}`;3}customLabel ← sku: notebook
8const defaultLabel: string = makeLabel(labelText);9const customLabel→ sku: notebook: string = makeLabel(labelTextnotebook, prefixTextsku);1011console.log(defaultLabelitem: notebook);12console.log(customLabelsku: notebook);outputitem: notebook sku: notebook
labelText ← marker, prefixText ← sku
2 return `${prefix}: ${text}`;3}45const labelText→ marker: string = "marker";6const prefixText→ sku: string = "sku";78const defaultLabel: string = makeLabel(labelTextmarker);9const customLabel: string = makeLabel(labelText, prefixText);function makeLabel(text: string, prefix: string = "item"): string
pass 1 of 21function makeLabel(textmarker: string, prefixitem: string = "item"): string {2 return `${prefixitem}: ${textmarker}`;3}defaultLabel ← item: marker
5const labelText: string = "marker";6const prefixText: string = "sku";78const defaultLabel→ item: marker: string = makeLabel(labelTextmarker);9const customLabel: string = makeLabel(labelTextmarker, prefixTextsku);function makeLabel(text: string, prefix: string = "item"): string
pass 2 of 21function makeLabel(textmarker: string, prefixsku: string = "item"): string {2 return `${prefixsku}: ${textmarker}`;3}customLabel ← sku: marker
8const defaultLabel: string = makeLabel(labelText);9const customLabel→ sku: marker: string = makeLabel(labelTextmarker, prefixTextsku);1011console.log(defaultLabelitem: marker);12console.log(customLabelsku: marker);outputitem: marker sku: marker
labelText ← eraser, prefixText ← sku
2 return `${prefix}: ${text}`;3}45const labelText→ eraser: string = "eraser";6const prefixText→ sku: string = "sku";78const defaultLabel: string = makeLabel(labelTexteraser);9const customLabel: string = makeLabel(labelText, prefixText);function makeLabel(text: string, prefix: string = "item"): string
pass 1 of 21function makeLabel(texteraser: string, prefixitem: string = "item"): string {2 return `${prefixitem}: ${texteraser}`;3}defaultLabel ← item: eraser
5const labelText: string = "eraser";6const prefixText: string = "sku";78const defaultLabel→ item: eraser: string = makeLabel(labelTexteraser);9const customLabel: string = makeLabel(labelTexteraser, prefixTextsku);function makeLabel(text: string, prefix: string = "item"): string
pass 2 of 21function makeLabel(texteraser: string, prefixsku: string = "item"): string {2 return `${prefixsku}: ${texteraser}`;3}customLabel ← sku: eraser
8const defaultLabel: string = makeLabel(labelText);9const customLabel→ sku: eraser: string = makeLabel(labelTexteraser, prefixTextsku);1011console.log(defaultLabelitem: eraser);12console.log(customLabelsku: eraser);outputitem: eraser sku: eraser
labelText ← notebook, prefixText ← tag
2 return `${prefix}: ${text}`;3}45const labelText→ notebook: string = "notebook";6const prefixText→ tag: string = "tag";78const defaultLabel: string = makeLabel(labelTextnotebook);9const customLabel: string = makeLabel(labelText, prefixText);function makeLabel(text: string, prefix: string = "item"): string
pass 1 of 21function makeLabel(textnotebook: string, prefixitem: string = "item"): string {2 return `${prefixitem}: ${textnotebook}`;3}defaultLabel ← item: notebook
5const labelText: string = "notebook";6const prefixText: string = "tag";78const defaultLabel→ item: notebook: string = makeLabel(labelTextnotebook);9const customLabel: string = makeLabel(labelTextnotebook, prefixTexttag);function makeLabel(text: string, prefix: string = "item"): string
pass 2 of 21function makeLabel(textnotebook: string, prefixtag: string = "item"): string {2 return `${prefixtag}: ${textnotebook}`;3}customLabel ← tag: notebook
8const defaultLabel: string = makeLabel(labelText);9const customLabel→ tag: notebook: string = makeLabel(labelTextnotebook, prefixTexttag);1011console.log(defaultLabelitem: notebook);12console.log(customLabeltag: notebook);outputitem: notebook tag: notebook
labelText ← notebook, prefixText ← bin
2 return `${prefix}: ${text}`;3}45const labelText→ notebook: string = "notebook";6const prefixText→ bin: string = "bin";78const defaultLabel: string = makeLabel(labelTextnotebook);9const customLabel: string = makeLabel(labelText, prefixText);function makeLabel(text: string, prefix: string = "item"): string
pass 1 of 21function makeLabel(textnotebook: string, prefixitem: string = "item"): string {2 return `${prefixitem}: ${textnotebook}`;3}defaultLabel ← item: notebook
5const labelText: string = "notebook";6const prefixText: string = "bin";78const defaultLabel→ item: notebook: string = makeLabel(labelTextnotebook);9const customLabel: string = makeLabel(labelTextnotebook, prefixTextbin);function makeLabel(text: string, prefix: string = "item"): string
pass 2 of 21function makeLabel(textnotebook: string, prefixbin: string = "item"): string {2 return `${prefixbin}: ${textnotebook}`;3}customLabel ← bin: notebook
8const defaultLabel: string = makeLabel(labelText);9const customLabel→ bin: notebook: string = makeLabel(labelTextnotebook, prefixTextbin);1011console.log(defaultLabelitem: notebook);12console.log(customLabelbin: notebook);outputitem: notebook bin: notebook
Use Default, Then Override
labelTextstarts asnotebook.makeLabel(labelText)uses the default prefixitem.prefixTextissku.makeLabel(labelText, prefixText)uses the custom prefix. | Call | Result | | --- | --- | |makeLabel("notebook")|item: notebook| |makeLabel("notebook", "sku")|sku: notebook| |makeLabel("marker", "tag")|tag: marker|
Exercise: defaults.ts
Call a label function once with its default prefix and once with a custom prefix