javascript - Čo znamená tento riadok Typescriptu?


Učím sa TypeScript od základov. Tu je kód z ich oficiálnej webovej stránky. Som zmätený z jedného riadku nižšie. Čo tu znamená toto vyhlásenie? {} za rovná sa znamená, že návratový typ je void?

var validators: { [s: string]: Validation.StringValidator; } = {};

///////////////////////////////////////////////////////////////////////////////////////////

module Validation {
    export interface StringValidator {
        isAcceptable(s: string): boolean;
    }

    var lettersRegexp = /^[A-Za-z]+$/;
    var numberRegexp = /^[0-9]+$/;

    export class LettersOnlyValidator implements StringValidator {
        isAcceptable(s: string) {
            return lettersRegexp.test(s);
        }
    }

    export class ZipCodeValidator implements StringValidator {
        isAcceptable(s: string) {
            return s.length === 5 && numberRegexp.test(s);
        }
    }
}

// Some samples to try
var strings = ['Hello', '98052', '101'];
// Validators to use
var validators: { [s: string]: Validation.StringValidator; } = {};
validators['ZIP code'] = new Validation.ZipCodeValidator();
validators['Letters only'] = new Validation.LettersOnlyValidator();
// Show whether each string passed each validator
strings.forEach(s => {
    for (var name in validators) {
        console.log('"' + s + '" ' + (validators[name].isAcceptable(s) ? ' matches ' : ' does not match ') + name);
    }
});

Odpoveď č. 1

Tento riadok...

var validators: { [s: string]: Validation.StringValidator; } = {};

je rozdelené takto:

  • var validators - deklarovať premennú
  • { [s: string]: Validation.StringValidator; } toto sú informácie o type. Typ tejto premennej je hash. Časti tu sú { [typ kľúča]: typ hodnoty }. Takže toto je hash reťazcov na Validation.StringValidator.
  • = {} Toto je počiatočná hodnota premennej: Prázdny hash.

Ak by som chcel vytvoriť haš z čísel na reťazce, použil by som

var myHash: { [key: number]: string } = {};

Odpoveď č. 2

Neviem TypeScript, ale viem ECMAScript, ktorého TypeScript je nadmnožinou, a v ECMAScripte zložené zátvorky označujú literál objektu, takže toto priraďuje prázdny objekt k premennej validators.

Na nasledujúcich dvoch riadkoch je prázdny objekt naplnený niektorými mapovaniami kľúč-hodnota.

Súvisiace články