TS Tricks: Capitolo 1

Vediamo alcune utility a livello dei tipi che ci permettono di maneggiarne uno per ottenere i più svariati risultati.

10/19/2020

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;
  };
};

Partial

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
    }
}

Required

Questa utility esegue esattamente l'operazione inversa della precedente:

type Person = Required<PartialPerson>

// Person
{
    name: string,
    age: number,
    work: {
        kind: string,
        RAL: number
    }
}

Readonly

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
    }
}

Pick

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
    }
}

Omit

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;
}

Bonus: keyof

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";

Articoli correlati

Vedi tutti