Typescript:別のオプションのタイプが設定されている場合は、タイプを設定する必要があります

ヘンニハウ卿

最初のタイプ(それ自体はオプション)が設定されている場合、2番目のタイプが必要です。コードに問題がある場合があります。1つのオプションのプロパティを設定すると、reactコンポーネントが機能するために他のプロパティも指定する必要があります。

interface ComponentProps {
    title: string;
    isEnlarged?: boolean;
    text?: string; // <-- If isEnlarged is set, text shouldn't be optional
    imageUri?: string // <--- If isEnlarged is set, imageUri shouldn't be optional
}

その理由は、タイプチェックを通じて一貫したコンポーネントの動作を強制するためです。拡大されたすべてのコンポーネントには、テキストと画像の両方が必要です。

TypeScriptヘルパー関数またはロジックによってそれを達成する方法はありますか?

TitianCernicova-Dragomir

識別された共用体を使用できます。

type ComponentProps = {
  title: string;
} & ({
    isEnlarged: true; // asuming this must be true for otehrs to be required
    text: string;
    imageUri: string
} | {
    isEnlarged?: false; // asuming this must be true for otehrs to be required
    text?: string;
    imageUri?: string
})

let a: ComponentProps = { title: "test" } //ok
let b: ComponentProps = { title: "test", isEnlarged: true } //err
let c: ComponentProps = { title: "test", isEnlarged: true, imageUri: "", text: "" } //ok

遊び場リンク

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SilverStripeをインストールすると、「php.iniのdate.timezoneオプションを正しく設定する必要があります」というエラーが表示されます。タイムゾーンが設定されている場合でも

分類Dev

Typescript:ジェネリック型が設定されている場合はオプションのpropが必要になります

分類Dev

Typescriptで、別のオプションのプロパティが設定されている場合にプロパティを必須にする方法は?

分類Dev

バインドされたモデルが選択オプションとは異なるタイプである場合、選択コントロールを使用してモデルの値をどのように設定する必要がありますか?

分類Dev

JavaScriptの変数が2回定義されている場合、インタープリターはどの定義を取る必要がありますか?

分類Dev

ソリューションファイル内のプロジェクトにMsBuildプロパティが設定されている場合、カスタムコンパイルエラーをスローする方法はありますか?

分類Dev

リーフレット:オプション「watch」が「true」に設定されている場合、後続のmap.locate()がタイムアウトします

分類Dev

[コマンドラインインターフェイス]をクリックします。他のオプションオプションが設定されていない場合は、オプションを必須にします。

分類Dev

最初の<select>が何らかのオプションに設定されている場合、2番目の<select>検証が必要になります

分類Dev

ルーター設定へのアクセスがISPによってブロックされている場合、どのような種類のプライバシーの脅威を考慮する必要がありますか?

分類Dev

エラーの取得ドロップダウン `value`は、` multiple`が設定されている場合は配列である必要があります。受信したタイプ: `[object String]`

分類Dev

MeasurementFormatterインスタンスのロケールを設定すると、インスタンスに設定されているnumberFormatterプロパティオプションが無効になります

分類Dev

ElasticSearch:search_analyzerが設定されている場合は、フィールドのアナライザーを設定する必要があります

分類Dev

サイズが設定されていない状態で、複数の属性が設定されているHTML選択タグの表示オプションの数を取得するにはどうすればよいですか?

分類Dev

列(0、1、3)にはタイプが混在しています。インポート時にdtypeオプションを指定するか、low_memory = Falseを設定してください。csvファイルをインポートする場合

分類Dev

ビジネス上の制約がない場合、Oracleの文字タイプにどのような制限を設定する必要がありますか?

分類Dev

プロパティが設定されている場合にのみスタイルを適用する

分類Dev

このファイルタイプを処理するには、適切なローダーが必要な場合があります。現在、このファイルを処理するように設定されているローダーはありません。C#

分類Dev

同じオプションが2回設定されている場合、mysqlはどのように競合を解決しますか?

分類Dev

(Shinyで)複数のオプションが設定されている場合、selectInputは起動しません

分類Dev

Flutter NSException:構成が失敗します。GoogleService-Info.plistの無効なGOOGLE_APP_IDが原因であるか、カスタマイズされたオプションで設定されている可能性があります

分類Dev

IntelliJでVMのメモリを設定する方法 Tomcatのメモリオプションを個別に設定する必要がありますか?

分類Dev

cloud9 IDEを使用している場合、Facebookアプリのドメインをどのように設定する必要がありますか?

分類Dev

スタイル設定されたコンポーネントは動的に作成されています。別のコンポーネント内でstyledを呼び出したため、この警告が表示される場合があります

分類Dev

エラーが発生するドロップダウン `value`は、` multiple`が設定されている場合は配列である必要があります

分類Dev

JSON.NETの場合、オプションのフィールドに属性を設定する必要があります

分類Dev

オプションが設定されている場合にBitmapFactory.decodeStreamがnullを返す

分類Dev

非表示の場合はオプションを空白に設定し、表示されている場合はデフォルトのままにする方法-html / php?

分類Dev

ビジュアルスタジオのコードブレークポイントが灰色に設定されていて機能しない。エラー(「justMyCode」オプションのために除外される場合がある)

Related 関連記事

  1. 1

    SilverStripeをインストールすると、「php.iniのdate.timezoneオプションを正しく設定する必要があります」というエラーが表示されます。タイムゾーンが設定されている場合でも

  2. 2

    Typescript:ジェネリック型が設定されている場合はオプションのpropが必要になります

  3. 3

    Typescriptで、別のオプションのプロパティが設定されている場合にプロパティを必須にする方法は?

  4. 4

    バインドされたモデルが選択オプションとは異なるタイプである場合、選択コントロールを使用してモデルの値をどのように設定する必要がありますか?

  5. 5

    JavaScriptの変数が2回定義されている場合、インタープリターはどの定義を取る必要がありますか?

  6. 6

    ソリューションファイル内のプロジェクトにMsBuildプロパティが設定されている場合、カスタムコンパイルエラーをスローする方法はありますか?

  7. 7

    リーフレット:オプション「watch」が「true」に設定されている場合、後続のmap.locate()がタイムアウトします

  8. 8

    [コマンドラインインターフェイス]をクリックします。他のオプションオプションが設定されていない場合は、オプションを必須にします。

  9. 9

    最初の<select>が何らかのオプションに設定されている場合、2番目の<select>検証が必要になります

  10. 10

    ルーター設定へのアクセスがISPによってブロックされている場合、どのような種類のプライバシーの脅威を考慮する必要がありますか?

  11. 11

    エラーの取得ドロップダウン `value`は、` multiple`が設定されている場合は配列である必要があります。受信したタイプ: `[object String]`

  12. 12

    MeasurementFormatterインスタンスのロケールを設定すると、インスタンスに設定されているnumberFormatterプロパティオプションが無効になります

  13. 13

    ElasticSearch:search_analyzerが設定されている場合は、フィールドのアナライザーを設定する必要があります

  14. 14

    サイズが設定されていない状態で、複数の属性が設定されているHTML選択タグの表示オプションの数を取得するにはどうすればよいですか?

  15. 15

    列(0、1、3)にはタイプが混在しています。インポート時にdtypeオプションを指定するか、low_memory = Falseを設定してください。csvファイルをインポートする場合

  16. 16

    ビジネス上の制約がない場合、Oracleの文字タイプにどのような制限を設定する必要がありますか?

  17. 17

    プロパティが設定されている場合にのみスタイルを適用する

  18. 18

    このファイルタイプを処理するには、適切なローダーが必要な場合があります。現在、このファイルを処理するように設定されているローダーはありません。C#

  19. 19

    同じオプションが2回設定されている場合、mysqlはどのように競合を解決しますか?

  20. 20

    (Shinyで)複数のオプションが設定されている場合、selectInputは起動しません

  21. 21

    Flutter NSException:構成が失敗します。GoogleService-Info.plistの無効なGOOGLE_APP_IDが原因であるか、カスタマイズされたオプションで設定されている可能性があります

  22. 22

    IntelliJでVMのメモリを設定する方法 Tomcatのメモリオプションを個別に設定する必要がありますか?

  23. 23

    cloud9 IDEを使用している場合、Facebookアプリのドメインをどのように設定する必要がありますか?

  24. 24

    スタイル設定されたコンポーネントは動的に作成されています。別のコンポーネント内でstyledを呼び出したため、この警告が表示される場合があります

  25. 25

    エラーが発生するドロップダウン `value`は、` multiple`が設定されている場合は配列である必要があります

  26. 26

    JSON.NETの場合、オプションのフィールドに属性を設定する必要があります

  27. 27

    オプションが設定されている場合にBitmapFactory.decodeStreamがnullを返す

  28. 28

    非表示の場合はオプションを空白に設定し、表示されている場合はデフォルトのままにする方法-html / php?

  29. 29

    ビジュアルスタジオのコードブレークポイントが灰色に設定されていて機能しない。エラー(「justMyCode」オプションのために除外される場合がある)

ホットタグ

アーカイブ