<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 映射類型 > <a style="color:orange;">該章節僅適用于代碼優先模式。</a> 當你構建像 CRUD(創建/查詢/更新/刪除)這些功能時,在基礎實體類型上構造變體通常會很有用。Nest 提供了幾個執行類型轉換的基礎函數,讓這項任務變得更加方便。 ### Partial 局部 當創建輸入驗證類型(也被叫做 DTOs)時,同時構建**創建**或**更新**變體通常會很有用。例如,**創建**變體可能會需要全部字段,而**更新**變體則可能全部是可選字段。 Nest 提供了 `PartialType()` 這個基礎函數來簡化此任務并最大限度的減少模版文件。 `PartialType()` 函數返回了一個類型(類),其中輸入類型的所有屬性都設置為可選。例如,假設我們有一個如下的**創建**類型: ```typescript @InputType() class CreateUserInput { @Field() email: string; @Field() password: string; @Field() firstName: string; } ``` 默認情況下,所有這些字段都是必需的。為創建具有相同字段的類型,但每個字段又都是可選的,可以使用 `PartialType()` 傳遞類引用(`CreateUserInput`)作為參數: ```typescript @InputType() export class UpdateUserInput extends PartialType(CreateUserInput) {} ``` > `PartialType()` 函數是從 `@nestjs/graphql` 包里導出的。 `PartialType()` 函數接受一個可選的第二參數,它是對裝飾器工廠的引用。此參數可用于更改應用于結果(子)類的裝飾器函數。如果未指定,子類有效地使用與**父**類相同的裝飾器(第一個參數中引用的類)。在上面的例子中,我們正在繼承用 `@InputType()` 裝飾器注釋的 `CreateUserInput` 類。即使我們希望 `UpdateUserInput` 也被視為用 `@InputType()` 裝飾過,我們不必傳遞 `InputType` 作為第二個參數。如果父類和子類不同,(例如,父類被 `@ObjectType` 裝飾),我們才需要傳遞 `InputType` 作為第二個參數。例如: ```typescript @InputType() export class UpdateUserInput extends PartialType(User, InputType) {} ``` ### Pick 選取 `PickType()` 函數可從一個輸入類型中選取一組屬性并構造一個新的類型(類)。例如,假設我們從這樣一個類型開始: ```typescript @InputType() class CreateUserInput { @Field() email: string; @Field() password: string; @Field() firstName: string; } ``` 我們用 `PickType()` 這個基礎函數從此類中挑選出一組屬性: ```typescript @InputType() export class UpdateEmailInput extends PickType(CreateUserInput, ['email'] as const) {} ``` > `PickType()` 函數是從 `@nestjs/graphql` 包里導出的。 ### Omit 忽略 `OmitType()` 函數通過從輸入類型中選取所有屬性然后刪除一組特定的鍵來構造一個類型。例如,假設我們從這樣一個類開始: ```typescript @InputType() class CreateUserInput { @Field() email: string; @Field() password: string; @Field() firstName: string; } ``` 我們可以生成一個派生類型,它具有除了 `email` 之外的所有屬性,如下所示。在這個構造中,`OmitType` 的第二個參數是一個屬性名數組。 > `OmitType()` 函數是從 `@nestjs/graphql` 包里導出的。 ### Intersection 交集 `IntersectionType()` 函數是合并兩個類型到一個新的類型(類)。例如,假設我們從這樣一個類開始: ```typescript @InputType() class CreateUserInput { @Field() email: string; @Field() password: string; } @ObjectType() export class AdditionalUserInfo { @Field() firstName: string; @Field() lastName: string; } ``` 我們可以把兩個類型中的所有屬性都合并起來生成一個新的類型。 ```typescript @InputType() export class UpdateUserInput extends IntersectionType(CreateUserInput, AdditionalUserInfo) {} ``` > `IntersectionType()` 函數是從 `@nestjs/graphql` 包里導出的。 ### Composition 組合 這些類型映射基礎函數是可組合的。例如,以下代碼會創建一個類型(類),它擁有 `CreateUserInput` 類型的除了 `email` 的所有屬性,而且這些屬性將被設置為可選: ```typescript @InputType() export class UpdateUserInput extends PartialType( OmitType(CreateUserInput, ['email'] as const), ) {} ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看