Hej chciałbym wymusić podawanie typów w typescript przy deklaracji zmiennych. Nawet jeśli TypeScript sam się domyślił co to za typ. Znalazłem tylko operacje odwrotną w eslint "@typescript-eslint/no-inferrable-types" :/. Jak mogę uzyskać zamierzony efekt ?
Dlaczego tak chcę ?
1) Martwy kod
interface Setting {
setting1: string;
setting2: number;
}
const DEFAULT_SETTING = {
setting1: 'abc',
setting2: 2,
unused:'key'
}
function setSetting(setting:Setting = DEFAULT_SETTING){
// some code
}
Gdy nie podaje typów mogę narazić się na martwy kod (w tym przypadku unused: 'key').
2) Łatwiejsza nawigacja - lubię mieć typy zawsze pod ręką. Gdy mam zapisany typ łatwiej mogę przejść do jego deklaracji (Ctrl + klik)
3) Przejrzystość przy rozproszeniach
this.someFields.map(({ someKey }) => {
// write code ! :D
})
Gdy widzę taki kod nie za bardzo wiem co się dzieje i co jest jakiego typu gdy na niego patrze. Jedyne co moge wywnioskować ze someFields jest jakąś tablicą ale jakie pola zawierają obiekty w tej tablicy to juz totalna zagadka. Dlatego też wolałbym aby typescript lub linter dbały o to aby kod wyglądał tak :
this.someFields.map(({ someKey }: Field) => {
// write code ! :D
})