Type Challenges Judge

Remove Index Signature

提出詳細

type IsIndexKey<K> = K extends string ? (string extends K ? true : false) : K extends number ? (number extends K ? true : false) : K extends symbol ? (symbol extends K ? true : false) : false; type RemoveIndexSignature<T extends object> = { [P in keyof T as IsIndexKey<P> extends true ? never : P]: T[P] }
提出日時2025-09-16 03:25:40
問題Remove Index Signature
ユーザーbalckowl
ステータスAccepted
テストケース
import type { Equal, Expect } from '@type-challenges/utils' type Foo = { [key: string]: any foo(): void } type Bar = { [key: number]: any bar(): void } type FooBar = { [key: symbol]: any foobar(): void } type Baz = { bar(): void baz: string } type cases = [ Expect<Equal<RemoveIndexSignature<Foo>, { foo(): void }>>, Expect<Equal<RemoveIndexSignature<Bar>, { bar(): void }>>, Expect<Equal<RemoveIndexSignature<FooBar>, { foobar(): void }>>, Expect<Equal<RemoveIndexSignature<Baz>, { bar(): void; baz: string }>>, ]