2
"or"タイプで奇妙な動作が見つかりました。バグや機能の場合はわかりません... 達成したいこと:私の変数は、プロパティ 'data'を持つオブジェクトまたはプロパティ 'records'を持つオブジェクトのみを許可する必要があります。しかし、 'データ'と 'プロパティ'の両方を持つオブジェクトではありません。 ので:私の意見ではtypescript 2.4.2 "or" strange behavior
type X = {
data: string
};
type Y = {
records: {
[recordId: number]: {
[attributeName: string]: any,
}
},
};
type XorY = X | Y;
let a:XorY = {
data: 'something',
records: {
12: {
someKey: 'someValue',
}
}
};
、への代入はエラーをスローする必要があります。任意のアイデア、私はどのようにTSでそのようなチェックを行うことができますか?
は通常、 'タイプ間の論理的または(^)演算子を使用して排他的な労働組合を許可します。 'OR'はインクルーシブで、' XOR'は排他的です。あなたは自分自身が「OR」だと言うので、ここでは「XOR」が使用されると思うのはなぜか分かりません。私は排他的な組合を持つことでこの効用を見ることができますが、包括的な組合はより頻繁に役に立つと思います。文字列を取る機能を持つ既存のJavaScriptライブラリ、または要素を考えてみましょう。うまくいけば、私がリンクしているgithubの問題にあなたのサポートを追加することは、その機能にどれだけの興味があるかを示すのに役立ちます。 – AndyJ