type a = { a: 1, [index: string]: any , name:string, b?:boolean}
type b = Omit<a,'a'> //b is {[index: string]:any}
操场
类型b应该是{[index: string]:any}
,但我希望它是{[index: string]: any , name:string, b?:boolean}
为什么会发生这种情况?
我在这个线程中找到了解决方案和解释
type a = { a: 1, [index: string]: any , name:string, b?:boolean}
declare type _removeIndexSignature<T> = Pick<
T,
{
[K in keyof T]: string extends K ? never : number extends K ? never : K
} extends { [_ in keyof T]: infer U }
? U
: never>
type b = _removeIndexSignature<a> //{ a: 1, name:string, b?:boolean}
操场