相关疑难解决方法(0)

打字稿:省略联合中所有接口的属性,但保留联合结构

我是打字稿的新手,我定义了一些接口,如下所示:

interface A {
  toRemove: string;
  key1: "this1";
  key2: number;
}
interface B {
  toRemove: string;
  key1: "this2";
  key3: string;
}
Run Code Online (Sandbox Code Playgroud)

以及两个接口的联合:

type C = A|B;
Run Code Online (Sandbox Code Playgroud)

我想要做的是toRemove通过 C 从两个接口中删除密钥,如下所示:

type CC = Omit<A, "toRemove">|Omit<B, "toRemove">;
Run Code Online (Sandbox Code Playgroud)

但不必从两个接口中省略密钥。这将是理想的:

type CC = Omit<C, "toRemove">;
Run Code Online (Sandbox Code Playgroud)

但是,不幸的是,CC将是 type Pick<A|B, "key1">key1两个接口中都存在的键在哪里。

从本质上讲,我想要实现的是一种要转换的“功能”:

A1|A2|...|An
Run Code Online (Sandbox Code Playgroud)

进入:

Omit<A1, K keyof A1>|Omit<A1, K keyof A2>|...|Omit<An, K keyof An>
Run Code Online (Sandbox Code Playgroud)

我遇到了这个答案/sf/answers/3940847151/,我有一种感觉,我需要的部分就在那里,但我真的不明白该代码中发生了什么。

typescript

19
推荐指数
1
解决办法
4793
查看次数

联合类型的所有可能的键

我想获取一个联合类型的所有可用键。

interface Foo {
  foo: string;
}

interface Bar {
   bar: string;
}

type Batz = Foo | Bar;

type AvailableKeys = keyof Batz;
Run Code Online (Sandbox Code Playgroud)

我想得到的'foo' | 'bar'结果AvailableKeysnever(作为替代方案,我可以做的是keyof (Foo & Bar),产生确切所需类型的结果,但我想避免重复这些类型)。

我已经发现问题keyofunion类型应该在github上产生键的union。我知道答案,那keyof UnionType不应该产生所有可能的密钥。

所以我的问题是:是否有另一种方法来获取所有可能的键的列表(如果需要tsc的版本2.8是可以的)?

typescript

8
推荐指数
1
解决办法
1208
查看次数

标签 统计

typescript ×2