TypeScript与Legal JavaScript:索引的类型必须为' string',' number',' symbol',或者' any'

时间:2017-01-19 19:07:11

标签: javascript typescript types syntax boolean

来自typescriptlang.org:

  

TypeScript是JavaScript的类型超集,可编译为纯JavaScript。

这是假的。

在这里,我有错误:

An index expression argument must be of type 'string', 'number', 'symbol', or 'any'

这是由[inline-map]表达式引起的:

test = { true: 'Y', false: 'N', undefined: 'IDK', null: 'Nah', 0: 'none' }[ true ];

不是Boolean类型&#34; <any>&#34; ???非常令人气愤,因为我使用这种语法左右&amp;中心。

此外,以下工作正常:

{ true: 'Y', false: 'N', undefined: 'IDK', null: 'Nah', 0: 'none' }[ undefined ];
{ true: 'Y', false: 'N', undefined: 'IDK', null: 'Nah', 0: 'none' }[ null ];

口语,&#34;任何合法的JavaScript都是完全合法的TypeScript&#34;完全是一种错误的陈述。

显然,我可以把它写成:

{ true: 'Y', false: 'N', undefined: 'IDK', null: 'Nah', 0: 'none' }[ ''+true ];

为什么Boolean不属于any类型

这是TypeScript的错误吗?

这是否已在TS 2.1中进行了协调?

我可以用tsconfig.json或其他方式更正此问题吗?

0 个答案:

没有答案