typescript如果其中一个成员为{[index:string]:any},则省略所有其他成员


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}

操场

最新更新