Function types describe a function's parameters and return value: optional parameters (?), default values, rest parameters, and the return type. A function signature can also be named with an alias, which lets you type callbacks and check every call.
Example
type Comparateur = (a: number, b: number) => number;
function saluer(nom: string, titre?: string): string { return `Hello ${titre ?? ''} ${nom}`; }