如何解决用其NonNullable版本覆盖属性
我想定义一个接受另一种类型及其键之一的类型,并通过其非空版本覆盖该键。到目前为止,我想到了这个。
type WithAttributeDefined<T,Key extends keyof T> = T & {[Key]: NonNullable<T[Key]>}
但这似乎不起作用。
interface Foo {
foo?: string
}
// v-- error
let x: WithAttributeDefined<Foo,"foo"> = {foo: "foo"}
它抱怨字面量缺少类型为"[unknown]"
的成员NonNullable<Foo["foo"]>
。
解决方法
type WithAttributeDefined<T,K extends keyof T> = T &
Record<K,Exclude<T[K],null | undefined>>;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。