生成的类型给我:
buffer.rewind()
基本上,type Result = {
common: string;
} & ({ propA: number; propB: null } | { propA: null; propB: string });
和propA
是propB
的一部分。可以定义oneOf
或propA
,但不能同时定义它们。
这在我的代码的某些部分非常有用。
现在,我需要根据会给我的类型创建一个新类型:
propB
我需要在代码的另一部分中全部定义它们,并可能同时设置{
common: string;
propA: number | null;
propB: string | null;
}
和propA
。我试图以不同的方式“欺骗” TS编译器……没有成功!
首先,这里是我所拥有的一些帮助者:
propB
现在这是我尝试过的不同代码段:
type Diff<T, U> = T extends U ? never : T;
type ValueOf<T> = T[keyof T];
但是无事可做。 TS总是设法站起来,放回原来的type Inline<T> = {[key in keyof T]: T[key]}
type Inline<T> = {[key in keyof T]: ValueOf<Pick<T, key>>}
type Inline<T> = {[key in keyof T]: T[Diff<keyof T, Exclude<keyof T, key>> ]}
这甚至可能吗?希望如此,请告诉我我缺少了一些东西,谢谢!