作者热门文章
- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
这是我想要完成的:
const names = ["foo", "bar", "baz"];
type NameType = elementof names; // This is not valid TypeScript
行为将与此相同:
type NameType = "foo" | "bar" | "baz";
解决方案需要完成一些事情。
TypeScript 可以做到这一点吗?
注意:这与 Convert string[] literal to string type literal 不同,因为该问题不需要特定排序的字符串序列。联合类型不会产生任何在运行时获取订单信息的方法。
最佳答案
您可以使用类型查询获取项目的类型:
type NameType = typeof names[number];
问题是names
的类型是string[]
,所以上面的代码只是生成了string
。
您可以使用辅助函数推断 const
的字符串文字类型。
function array<T extends string>(p: T[]) : T[] {
return p
}
const names = array(["foo", "bar", "baz"]);
type NameType = typeof names[number]; // The same as "foo" | "bar" | "baz"
关于typescript - 的元素?我能做到吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50704766/
我是一名优秀的程序员,十分优秀!