Tildel eksplisitt hvilken som helst type i TypeScript


For øyeblikket migrerer vi kodebasen vår til TypeScript, og vi har mange steder med typen any. Så jeg prøver å håndheve eksplisitt setting av variabler som any.

Her er et eksempelutdrag.

const a: string = 'h';
const b: any = 4;

const message = a || b; 
// Here I would like to get warning that I am assigning any to the message,
// so I would have to write const message: any = a || b;

function say(x: string) {
    console.log(x);
} 

say(message);

Jeg er klar over TSLint-regelen typedef (Den krever at alle variabler får en typeangivelse og ikke bare i tilfeller med any), også no-unsafe-any (fungerer ikke i dette tilfellet).

Finnes det en måte å eksplisitt kreve å definere en hvilken som helst type hvis du prøver å tilordne 'any' til den?

Svar #1

Ideelt sett bør du unngå any. any kan per definisjon tildeles til hva som helst og fra hva som helst. Det er ment å være usikkert og det har også den uheldige vanen å spre seg.

Du kan bruke den sikrere unknown-typen. Dette ligner på any ved at du kan tilordne hva som helst til den og det er ment å representere data som du ikke har en godt definert type for. I motsetning til any kan du imidlertid ikke gjøre noe med den uten en typepåstand eller typebeskytter. Se any vs unknown

I tillegg til det, aktiver tslint no-any for å hindre alle fra å bruke any og vær forsiktig med forhåndsdefinerte funksjoner som JSON.parse, som fortsatt kan snike inn et any innimellom.