gpt4 book ai didi

typescript :如何制作一个作为接口(interface)键的类型,但只有作为字符串的键

转载 作者:行者123 更新时间:2023-12-05 00:43:30 26 4
gpt4 key购买 nike

假设我有这个界面

interface MyInterface {
val1: string
val2: string
val3: number
val4: string
val5: Date
}

我想创建一个类型,它是 MyInterface 的键,但只有键是字符串:

type myType = keyof MyInterface //where key === typeof 'string'
// myType: 'val1' | 'val2' | 'val4'

我怎么能做这样的事情?

最佳答案

您可以使用映射类型仅保留特定键,然后对结果类型执行 keyof

type myType = keyof {
[P in keyof MyInterface as MyInterface[P] extends string ? P: never]: any
}

Playground Link

你也可以让它通用


type KeyOfType<T, V> = keyof {
[P in keyof T as T[P] extends V? P: never]: any
}

type myType = KeyOfType<MyInterface, string>
type myType2 = KeyOfType<MyInterface, number>

Playground Link

映射类型的 as 子句允许我们操作键的名称。如果键被映射到 never 键将从结果类型中删除。您可以在 PR 中找到更多信息

关于 typescript :如何制作一个作为接口(interface)键的类型,但只有作为字符串的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70008245/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com