私は次のような構造で画像のリストを返すAPIを打っています:基本的な契約はphotos.primary
が常に存在することであるインタフェースを保証されたプロパティで定義しますか?
{
"photos": {
"1": "PHOTOS/1.jpg",
"3": "PHOTOS/3.jpg",
"4": "PHOTOS/4.jpg",
"primary": "PHOTOS/X/PRI.jpg"
},
"sketches": {
"1": "SKETCHES/X/1.jpg",
"3": "SKETCHES/X/3.jpg",
"4": "SKETCHES/X/4.jpg"
}
}
、photos
上の他のすべてのプロパティは、数値のIDであり、photos
内のすべてのIDのために一致するIDはsketches
です。 IDは連続しているとは限りません。
がフィールドであることを知っているだけでなく、他のフィールドも使用できることを知っているImageIndex
という名前のインターフェイスを設定したいと考えています。私はちょうどany
と写真やスケッチをマークすることができます知っているが、インテリセンスのために私はprimary
の存在を定義する価値があると思う。
私はそうのような交差点のタイプを使用してみました:
export interface PropertyImageIndex {
photos: ContainsPrimary&any;
sketches: any;
}
interface ContainsPrimary {
primary: string;
}
しかしVSCodeは、通常、それはインテリセンスの提案のショーだろうというとき、何もありません。これは、明示的なImageList
タイプphotos
の上にany
が続き、すべての提案を失うことを示しているようです。
typescriptに「このオブジェクトには少なくともこれらのフィールドがありますが、保証されたフィールドがインテリセンスの提案として表示されるように、他のフィールドがあります」と伝える方法はありますか?
これは私が後だものです!ちょうどその「スケッチ」はオプションではありませんが、それは簡単な修正です。 –