typescript 如何将对象键作为数组的成员键入?

yeotifhr  于 2023-03-04  发布在  TypeScript
关注(0)|答案(1)|浏览(102)

我有一个来自API的对象数组,如下所示:

const items = [
    {
        title: 'foo',
        date: '123'
    },
    {
        title: 'bar',
        date: '456'
    }
]

我想使用所有可用的项目标题来键入另一个对象的关键字。例如:

const titles = items.map(item => item.title)
type titlesType = typeof items[number]

type fizz = {[titlesType] : boolean}

我目前的方法在TS中是不可能的。
以前有人遇到过这个问题吗,或者有什么建议?
非常感谢。
谢谢你。

0h4hbjxa

0h4hbjxa1#

您几乎已经完成了,只需要添加['title']索引:

type TitlesType = typeof items[number]['title']

但是,要获得类型"foo" | "bar",还需要将items声明为const,否则TitlesType类型将只是string

const items = [
    {
        title: 'foo',
        date: '123'
    },
    {
        title: 'bar',
        date: '456'
    }
] as const // <----------- 
type TitlesType = typeof items[number]['title']
const foo: TitlesType = 'foo' // no error
const fooz: TitlesType = 'fooz' // error

相关问题