下面我有一个扩展Joke
的Signup
类。
我想要的是v
有一个类型错误,用户名不能是一个数字,但通用的ObjectProps
不能正确地获得Signup
的道具。
操场上联系
type Constructor = new (...args: any[]) => {}
type ObjectProps<T extends Constructor, V extends Constructor | undefined = undefined> = Omit<{
[k in keyof T]: T[k]
}, keyof V>
class Joke {
anythingNotInOriginal: boolean = true
}
class Signup extends Joke {
email: string = ''
username: string = ''
password: string = ''
}
type x = ObjectProps<typeof Signup, typeof Joke>
const v: x = {
username: 1
}
如何让x
具有以下签名:
{ email: string, username: string, password: string }
是从Signup
类派生出来的?
正如@jcalz在评论中提到的,这是可行的
const v: Omit<Signup, keyof Joke> = {
email: '',
username: '',
password: ''
}