Template Literal Types
Unit String Values
Template literal types can model values that combine a number and a unit suffix.
unit string
A type such as `` `${number}px` `` accepts many numeric strings while still requiring a unit.
Unit String Values
units.ts
Replay: real traced execution (multi-file project)
type CssUnit = "px" | "rem";
type CssSize = `${number}${CssUnit}`;
function styleLine(size: CssSize): string {
return `font-size=${size}`;
}
const unit: CssUnit = "px";
const amount: number = 14;
const size: CssSize = `${amount}${unit}`;
console.log(styleLine(size));
type CssUnit = "px" | "rem";
type CssSize = `${number}${CssUnit}`;
function styleLine(size: CssSize): string {
return `font-size=${size}`;
}
const unit: CssUnit = "rem";
const amount: number = 14;
const size: CssSize = `${amount}${unit}`;
console.log(styleLine(size));
unit ← px, amount ← 14, size ← 14px
5 return `font-size=${size}`;6}78const unit→ px: CssUnit = "px"; //@unit="rem"9const amount→ 14: number = 14;10const size→ 14px: CssSize = `${amount14}${unitpx}`;1112console.log(styleLine(size14px));function styleLine(size: CssSize): string
1type CssUnit = "px" | "rem";2type CssSize = `${number}${CssUnit}`;34function styleLine(size14px: CssSize): string {5 return `font-size=${size14px}`;6}console.log(styleLine(size));
9const amount: number = 14;10const size: CssSize = `${amount}${unit}`;1112console.log(styleLine(size14px));outputfont-size=14px
unit ← rem, amount ← 14, size ← 14rem
5 return `font-size=${size}`;6}78const unit→ rem: CssUnit = "rem";9const amount→ 14: number = 14;10const size→ 14rem: CssSize = `${amount14}${unitrem}`;1112console.log(styleLine(size14rem));function styleLine(size: CssSize): string
1type CssUnit = "px" | "rem";2type CssSize = `${number}${CssUnit}`;34function styleLine(size14rem: CssSize): string {5 return `font-size=${size14rem}`;6}console.log(styleLine(size));
9const amount: number = 14;10const size: CssSize = `${amount}${unit}`;1112console.log(styleLine(size14rem));outputfont-size=14rem