这行打字稿是什么意思?

时间:2015-11-17 22:47:07

标签: javascript typescript frontend

我正在从头学习一些打字稿。这是他们官方网站上的一些代码。我对下面的一行感到困惑。这个声明在这里意味着什么?等号后的{}表示返回类型无效?

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

2 个答案:

答案 0 :(得分:5)

这一行...

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

分解为:

  • var validators - 声明变量
  • { [s: string]: Validation.StringValidator; }这是类型信息。此变量的类型是哈希。这里的部分是{ [type of key]: type of value }。所以,这是Validation.StringValidator的字符串哈希。
  • = {}这是变量的初始值:空哈希。

如果我想对字符串进行数字哈希,我会使用

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

答案 1 :(得分:-2)

我不知道TypeScript,但我确实知道ECMAScript,其中TypeScript是超集,而在ECMAScript中,花括号表示对象文字,因此,这会为变量validators分配一个空对象。

在接下来的两行中,空对象填充了一些键值映射。

相关问题