我想从对象数组中生成类型。
const names = [
{
name: 'Bob'
},
{
name: 'Jane'
},
{
name: 'John'
},
{
name: 'Mike'
},
]
结果应该如下所示:
type NameType = 'Bob' | 'Jane' | 'John' | 'Mike'
我看到了很多参考资料,比如这个typescript-types-from-arrays
但是这些例子总是使用字符串数组作为资源。比如:
const array = ['one', 'two',...]
它完美无瑕。
但我尝试用array.map
生成类型,如下所示:
const allNames = names.map((item) => item.name) as const;
type NameType = typeof names[number];
但这导致了:
A 'const' assertions can only be applied to references to
enum members, or string, number, boolean, array, or object literals.
下面是一个我尝试做的可播放的例子:Stackblitz
我想要搭配IntelliSense使用getName()
函式,以了解names
数组中有哪些可用的名称。例如:
1条答案
按热度按时间yhived7q1#
使用
as const
和indexed access types的组合仍然可以实现这一点TypeScriptPlayground