如何在 TypeScript 中声明变量具有数组元素的类型?
How to declare that a variable has the type of an array element in TypeScript?
在 TypeScript 中,可以声明,例如,var b
具有与 var 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;
有没有更好的方法?
Is there a better way?
没有。没有专门的语法。在没有专用语法的情况下,您基本上需要一些接受 T[]
并为您提供 T
的东西。你的内联函数是这种通用用法的一个很好的例子。
在语言规范中找不到任何关于此的内容,对我来说这似乎太琐碎而无法实现;至少在 TypeScript 所处的当前阶段。
但是,shorter/simpler 解决方法可能是:
var a = 0 && c[0];
var b: typeof a;
即使 c
是 null
或 undefined
也应该工作。
对性能的影响也小得多。
在 TypeScript 中,可以声明,例如,var b
具有与 var 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;
有没有更好的方法?
Is there a better way?
没有。没有专门的语法。在没有专用语法的情况下,您基本上需要一些接受 T[]
并为您提供 T
的东西。你的内联函数是这种通用用法的一个很好的例子。
在语言规范中找不到任何关于此的内容,对我来说这似乎太琐碎而无法实现;至少在 TypeScript 所处的当前阶段。
但是,shorter/simpler 解决方法可能是:
var a = 0 && c[0];
var b: typeof a;
即使 c
是 null
或 undefined
也应该工作。
对性能的影响也小得多。