这行打字稿是什么意思?
What does this line of Typescript mean?
我正在从头开始学习一些 Typescript。这是他们官方网站上的一些代码。我对 below.What 中的一行感到困惑,这个声明在这里是什么意思?等号后的 {} 表示 return 类型无效?
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);
}
});
我不知道 TypeScript,但我知道 ECMAScript,TypeScript 是它的超集,在 ECMAScript 中,花括号表示对象字面量,因此,这会将一个空对象赋给变量 validators
.
在接下来的两行中,空对象填充了一些键值映射。
这一行...
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 } = {};
我正在从头开始学习一些 Typescript。这是他们官方网站上的一些代码。我对 below.What 中的一行感到困惑,这个声明在这里是什么意思?等号后的 {} 表示 return 类型无效?
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);
}
});
我不知道 TypeScript,但我知道 ECMAScript,TypeScript 是它的超集,在 ECMAScript 中,花括号表示对象字面量,因此,这会将一个空对象赋给变量 validators
.
在接下来的两行中,空对象填充了一些键值映射。
这一行...
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 } = {};