javascript - 这行 typescript 是什么意思?

标签 javascript typescript frontend

<分区>

我正在从头开始学习一些 Typescript。这是他们官方网站上的一些代码。我对下面的一行感到困惑。这个声明在这里是什么意思?等号后的 {} 表示返回类型为 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);
    }
});

最佳答案

这一行...

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

分解为:

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

如果我想将数字散列为字符串,我会使用

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

关于javascript - 这行 typescript 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33768563/

相关文章:

css - Sharepoint 2013 任务列表中元素的样式

javascript - 如果子文档值不存在,Mongodb 将插入到子文档中

javascript - 在 AJAX 中执行 POST 查询时,控制台中收到 'data is not defined' 错误

javascript - 在 Controller 之前执行指令代码

mysql - 无法使用 OneToMany 关系添加新记录

html - CSS Grid 将剩余的可用空间用于之间的所有元素

javascript - 网页 : detect and block certain keyboard shortcuts

typescript - 在 JestJS 中测试私有(private)方法

angular - 服务中不能使用渲染器?

javascript - Grunt 不加载外部任务