TypeScript – wnioskowanie typów [types inference]

TypeScript w wielu sytuacjach jest w stanie wywnioskować typ i na tej podstawie sprawdzać poprawność jego poprawność.

Przypisanie wartości prostej

Dla następującego przypisania, TypeScript sam jest w stanie wywnioskować typ:

TypeScript wie, że zmienna name jest typu string. Co powoduje, że nie jest możliwe późniejsze przypisanie do tej zmiennej wartości innego typu:

let name = 123; //to nie zadziala

Niepoprawna praktyka

Z racji, że TypeScript jest w stanie sam wywnioskować typ w tak prostych sytuacjach, niepoprawną praktyką będzie przypisywanie typu w takich sytuacjach:

let name: string = 'John'; //nadmiarowe dopisywanie typu

Przypisanie obiektu

Podobnie jak w przypadku przypisywania typów prostych, TypeScript jest w stanie wywnioskować i „bronić” typu przypisanego obiektu. Przykładowo dla:

let person = {
    name: 'John',
    age: 45
}

Nie będzie możliwe przypisanie lub pobranie innych pól niż wyżej przypisane:

person.surname = 'Legend'; //błąd
console.log(person.sex); //błąd

Obie linijki spowodują błąd kompilacji (a dokładnie rzecz ujmując transpilacji).

Dodawanie elementów do tablicy

TypeScript także wspiera wnioskowanie typów w tablicach – jeśli stworzymy tablicę zawierającą elementy jednego typu, to później nie będzie możliwe dodanie elementu innego typu.

let grades = [3,4,1,2,5,3];
grades.push('John'); // to nie zadziała