我想实现类型的条件行为。当我以对象类型(数组、对象、元组、记录)(实际上是任何复合类型)的形式放置泛型时,我希望该类型表现为该对象的 typeof 字段,但是当给定类型是主类型时,我想要是同一类型。
type B<A> = A extends object ? A[keyof A] : A;
const tuple: [1, 2];
const element:B<typeof tuple> = 2; // # ISSUE - element can be also any method of array
const num: 1;
const numElment:B<typeof num> = 1;
Run Code Online (Sandbox Code Playgroud)
上面的代码有效,但对于复合B类型,我还可以从数组类型分配所有方法类型。我的问题是 - 我如何指定我只对非函数的事物感兴趣。因此,只有纯字段(如元组示例)element应该只是数字。
我也尝试使用extends {}orextends {[a: string | number]: any}但它也不起作用,甚至上面的代码片段在那之后也会中断。
typescript ×1