对不起,如果标题不是太具体,我不知道我要做的事情的名称。
我有一个类
type Cvalues {
d: any;
e: any;
f: any;
}
class Character {
a: any;
b: any;
c: Cvalues
}
,我希望构造函数尽可能地接收它的所有属性,但我希望C是一个Partial,而不将C转换为C: Partial<CValues>
。
我"solution">
type CharacterConstructor = {
[K in keyof Character]? Character[K]
} & {
C?: Partial<Cvalues >
}
我想要角色被建造成:
new Character({
a: 1,
c: {
e: 2
}
)
或
new Character(
b: 3,
)
我为类的构造函数尝试了几种配置,我想要一个适合我需要的类型,但找不到它或一个接近的解决方案
如果您正在寻找的参数类型是:
type CharacterParams = {
a?: any;
b?: any;
c?: {
d?: any;
e?: any;
f?: any;
}
}
那么你似乎已经完成大部分了。您可以使用Partial<..>
和Omit<..>
:
type Cvalues = {
d: any;
e: any;
f: any;
}
type CharacterValues = {
a: any;
b: any;
c: Cvalues;
}
class Character {
constructor(
{ a, b, c }:
Partial<
Omit<CharacterValues, "c"> // Replace .c ...
& { c: Partial<Cvalues> } // ... with any subset of .c
>
) { /* constructor stuff */ }
}
沙箱