小编Mac*_*ora的帖子

TypeScript 条件类型扩展对象,仅可用属性

我想实现类型的条件行为。当我以对象类型(数组、对象、元组、记录)(实际上是任何复合类型)的形式放置泛型时,我希望该类型表现为该对象的 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

3
推荐指数
1
解决办法
2万
查看次数

标签 统计

typescript ×1