如何在TypeScript中声明变量具有数组元素的类型?

时间:2015-02-26 00:36:43

标签: typescript typeof

在TypeScript中,可以声明,例如var bvar s的类型相同:

var s = "hello";
var b: typeof s;

是否有一种简单的方法可以声明var b与数组中的元素具有相同的类型?在这里,var b仍然应该是一个字符串:

var c = ["hello", "world"];
var b: typeof(c[0]);

一个丑陋的解决方法(即使c为空也会运行)是:

var c = ["hello", "world"];
var a = (<T>(x: T[]): T => null)(c);
var b: typeof a;

有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

  

有更好的方法吗?

没有。它没有专门的语法。如果没有专用语法,您基本上需要T[]并提供T的内容。你的内联函数是这种通用用法的一个很好的例子。

答案 1 :(得分:1)

无法在语言规范中找到关于此的任何内容,对我而言,这似乎是一件太微不足道的事情,无法实施;至少在TypeScript所处的当前阶段。

但是,更短/更简单的解决方法可能是:

var a = 0 && c[0];
var b: typeof a;

即使cnullundefined,也应该有效 对性能的影响要小得多。