我想定义一个映射的条件类型,以便可以从具有null
值的类型中提取属性名称。
interface Person {
name: string
age: number
category: string | null
}
type NotNullablePersonProps = NotNullablePropertyNames<Person>
// NotNullablePersonProps should be "name" | "age"
type OptionalPropertyNames<T> = {
[K in keyof T]-?: undefined extends T[K] ? K : never
}[keyof T];
type RequiredPropertyNames<T> = {
[K in keyof T]-?: undefined extends T[K] ? never : K
}[keyof T];
尽管如此,我仍然无法使其具有null
属性的情况。
如何定义NotNullablePropertyNames
映射条件类型以返回所有不能为null
的属性名称?
答案 0 :(得分:1)
如果启用了undefined
,则在您提供的代码中用null
替换strictNullChecks
可以正常工作。如果没有该选项,string | null
就是string
,那么就没有提取物
interface Person {
name: string
age: number
category: string | null
}
type NotNullablePersonProps = NotNullablePropertyNames<Person> // name | age
type NotNullablePropertyNames<T> = {
[K in keyof T]-?: null extends T[K] ? never : K
}[keyof T];