Vediamo oggi alcune utility a livello dei tipi che ci permettono di maneggiarne uno per ottenere i più svariati risultati. Il preset dell'interpo articolo è il seguente tipo che rappresenta una persona:
type Person = {
name: string,
age: number,
work: {
kind: string,
RAL: number
}
}
La prima utility, Partial
, ci permette di rendere tutti i field al primo livello di un oggetto opzionali:
type PartialPerson = Partial<Person>
// PartialPerson
{
name?: string,
age?: number,
work?: {
kind: string,
RAL: number
}
}
Questa utility esegue esattamente l'operazione inversa della precedente:
type Person = Required<PartialPerson>
// Person
{
name: string,
age: number,
work: {
kind: string,
RAL: number
}
}
Questa utility ci permette di rendere tutti i field al primo livello di un oggetto readonly:
type ReadonlyPerson = Readonly<Person>
// ReadonlyPerson
{
readonly name: string,
readonly age: number,
readonly work: {
kind: string,
RAL: number
}
}
Questa utility ci permette di estrarre un sottoinsieme delle proprietà al primo livello di un oggetto:
type PersonSubset = Pick<Person, "name" | "work">
// PersonSubset
{
name: string,
work: {
kind: string,
RAL: number
}
}
Questa utility ci permette di eslcudere un sottoinsieme delle proprietà al primo livello di un oggetto:
type PersonSubset = Omit<Person, "name" | "work">
// PersonSubset
{
age: number
}
Questo è un operatore particolare messo a disposizione solo da TypeScript perché opera a livello dei tipi, il quale permette di ricavare una union di tutte le proprietà al primo livello di un oggetto:
type PersonKeyOf = keyof Person
// PersonKeyOf
"name" | "age" | "work"