Types, part I
Each value in Typst has a type. You don't have to specify it, but it is important.
Content (content)
We have already seen it. A type that represents what is displayed in document.
#let c = [It is _content_!]
// Check type of c
#(type(c) == content)
#c
// repr gives an "inner representation" of value
#repr(c)
Important: It is very hard to convert content to plain text, as content may contain anything! So be careful when passing and storing content in variables.
None (none)
Nothing. Also known as null in other languages. It isn't displayed, converts to empty content.
#none
#repr(none)
String (str)
String contains only plain text and no formatting. Just some chars. That allows us to work with chars:
#let s = "Some large string. There could be escape sentences: \n,
line breaks, and even unicode codes: \u{1251}"
#s \
#type(s) \
`repr`: #repr(s)
#let s = "another small string"
#s.replace("a", sym.alpha) \
#s.split(" ") // split by space
You can convert other types to their string representation using this type's constructor (e.g. convert number to string):
#str(5) // string, can be worked with as string
Boolean (bool)
true/false. Used in if and many others
#let b = false
#b \
#repr(b) \
#(true and not true or true) = #((true and (not true)) or true) \
#if (4 > 3) {
"4 is more than 3"
}
Integer (int)
A whole number.
The number can also be specified as hexadecimal, octal, or binary by starting it with a zero followed by either x, o, or b.
#let n = 5
#n \
#(n += 1) \
#n \
#calc.pow(2, n) \
#type(n) \
#repr(n)
#(1 + 2) \
#(2 - 5) \
#(3 + 4 < 8)
#0xff \
#0o10 \
#0b1001
You can convert a value to an integer with this type's constructor (e.g. convert string to int).
#int(false) \
#int(true) \
#int(2.7) \
#(int("27") + int("4"))
Float (float)
Works the same way as integer, but can store floating point numbers. However, precision may be lost.
#let n = 5.0
// You can mix floats and integers,
// they will be implicitly converted
#(n += 1) \
#calc.pow(2, n) \
#(0.2 + 0.1) \
#type(n)
#3.14 \
#1e4 \
#(10 / 4)
You can convert a value to a float with this type's constructor (e.g. convert string to float).
#float(40%) \
#float("2.7") \
#float("1e5")