型からプロパティ名とプロパティ型を取り除いて区別された共用体型を作成するジェネリック型を作成しようとしています。例えば:私の最初の試みである別の型のプロパティ名を使用して識別された共用体を作成する
type FooBarPair = {
key: "foo",
value: string
} | {
key: "bar",
value: number
}
:
type Pairs<T> = {
[TKey in keyof T]: {
key: TKey;
value: T[TKey];
};
};
type Pair<T> = Pairs<T>[keyof T];
が、私は上記のタイプにこれを適用しよう:
let pair: Pair<FooBar> = {
key: "foo",
value: 3
};
type FooBar = {
foo: string;
bar: number;
};
はにマッピングされます
私はコンパイルエラーが予想されますが、私は1つはありません。私はPair<FooBar>
の種類を検査するとき、私はそれがに相当見つける:
{
key: "foo" | "bar";
value: string | number;
}
私は、これはtypescriptですのバグかもしれないと思うが、私はこれを達成するための他の方法があったかどうかを確認したかったです。
ありがとう、私はバグのように思えます、私はtypescriptで問題を提起します。 –
[問題](https://github.com/Microsoft/TypeScript/issues/15756)が発生しました。 –
[修正プログラムは動作中です](https://github.com/Microsoft/TypeScript/pull/18042) – artem