Cách sử dụng Generic trong TypeRcript

Tác giả đã chọn quỹ cứu trợ Covid-19 để nhận quyên góp như một phần của việc viết cho chương trình quyên góp.

Giới thiệu

generic là một tính năng cơ bản của các ngôn ngữ được viết tĩnh, cho phép các nhà phát triển vượt qua các loại dưới dạng tham số đến loại khác, hàm hoặc cấu trúc khác. Khi một nhà phát triển tạo thành phần của họ một thành phần chung, họ cung cấp cho thành phần đó khả năng chấp nhận và thực thi gõ được truyền trong khi thành phần được sử dụng, giúp cải thiện tính linh hoạt của mã, làm cho các thành phần có thể sử dụng lại và loại bỏ trùng lặp.

Tallecript hỗ trợ đầy đủ các generic như một cách để giới thiệu loại an toàn loại thành các thành phần chấp nhận các đối số và các giá trị trả về có loại sẽ không xác định cho đến khi chúng được tiêu thụ sau trong mã của bạn. Trong hướng dẫn này, bạn sẽ thử các ví dụ trong thế giới thực về Genercript và khám phá cách chúng được sử dụng trong các chức năng, loại, lớp và giao diện. Bạn cũng sẽ sử dụng Generic để tạo các loại ánh xạ và các loại có điều kiện, sẽ giúp bạn tạo các thành phần TypeScript có tính linh hoạt để áp dụng cho tất cả các tình huống cần thiết trong mã của bạn.

Điều kiện tiên quyết

Để theo hướng dẫn này, bạn sẽ cần:

  • Một môi trường mà bạn có thể thực hiện các chương trình Typecript để theo dõi cùng với các ví dụ. Để thiết lập điều này trên máy cục bộ của bạn, bạn sẽ cần như sau:
    • Cả nút và NPM [hoặc Sợi] được cài đặt để chạy môi trường phát triển xử lý các gói liên quan đến tytcript. Để cài đặt trên MacOS hoặc Ubuntu 20.04, hãy làm theo các bước trong cách cài đặt Node.js và tạo môi trường phát triển cục bộ trên macos hoặc Installing Node.js with Apt Using a NodeSource PPA section of How To Install Node.js on Ubuntu 20.04. This also works if you are using the Windows Subsystem for Linux [WSL].
    • Ngoài ra, bạn sẽ cần trình biên dịch typcript [ tsc ] được cài đặt trên máy của bạn. Để làm điều này, hãy tham khảo trang web TypeScript chính thức.
  • Nếu bạn không muốn tạo môi trường loại trên máy cục bộ của mình, bạn có thể sử dụng Sân chơi TypeScript chính thức để theo dõi.
  • Bạn sẽ cần đủ kiến ​​thức về JavaScript, đặc biệt là cú pháp ES6 +, chẳng hạn như sự hủy diệt, nhà khai thác và nhập khẩu / xuất nhập khẩu. Nếu bạn cần thêm thông tin về các chủ đề này, hãy đọc cách mã trong chuỗi JavaScript của chúng tôi.
  • Hướng dẫn này sẽ tham chiếu các khía cạnh của các trình soạn thảo văn bản hỗ trợ ListionScript và hiển thị các lỗi trong dòng. Điều này là không cần thiết để sử dụng typcript, nhưng có nhiều lợi thế hơn về các tính năng của tytScript. Để đạt được lợi ích của những điều này, bạn có thể sử dụng trình soạn thảo văn bản như Visual Studio Mode, có sự hỗ trợ đầy đủ cho TypeRcript ra khỏi hộp. Bạn cũng có thể thử những lợi ích này trong Sân chơi Typecript.

Tất cả các ví dụ được hiển thị trong hướng dẫn này đã được tạo bằng phiên bản TypeRcript 4.2.3.

Cú pháp chung

Trước khi vào ứng dụng của Generic, trước tiên, hướng dẫn này sẽ thực hiện cú pháp để phân loại Generics, theo sau là một ví dụ để minh họa mục đích chung của họ.

Generic xuất hiện trong mã TypeRcript bên trong dấu ngoặc góc, ở định dạng < / a> , trong đó t thể hiện một loại được truyền. có thể được đọc là một generic của loại t . Trong trường hợp này, T sẽ hoạt động giống như cách các tham số hoạt động trong các hàm, với tư cách là trình giữ chỗ cho một loại sẽ được khai báo khi một thể hiện của cấu trúc được tạo ra. Do đó, các loại chung được chỉ định trong dấu ngoặc góc bên trong còn được gọi là tham số loại chung hoặc chỉ tham số loại . Nhiều loại chung cũng có thể xuất hiện trong một định nghĩa duy nhất, như . ., where T represents a passed-in type. can be read as a generic of type T. In this case, T will operate in the same way that parameters work in functions, as placeholders for a type that will be declared when an instance of the structure is created. The generic types specified inside angle brackets are therefore also known as generic type parameters or just type parameters. Multiple generic types can also appear in a single definition, like .

Chức năng Async Fetchapi [Đường dẫn: Chuỗi] { Báo cáo const = chờ tìm nạp [`//example.com/api$ {path}`] Trả lại phản hồi.json []; Không Theo quy ước, các lập trình viên thường sử dụng một chữ cái để đặt tên một loại chung. Đây không phải là quy tắc cú pháp và bạn có thể đặt tên cho các loại Generic giống như bất kỳ loại nào khác trong TypeRcript, nhưng quy ước này giúp truyền tải ngay lập tức với những người đọc mã của bạn mà một loại chung không yêu cầu loại cụ thể.

Chức năng không đồng bộ này lấy một đường dẫn URL dưới dạng đối số, sử dụng API tìm nạp để thực hiện yêu cầu đến URL, sau đó trả về giá trị phản hồi JSON. Trong trường hợp này, loại trả về của

Nhập userfetchoptions = { Email: Boolean; Tên: Boolean; Không

Mã này hiện đang thực thi hình dạng loại. Nếu bạn đặt bất kỳ phím nào thành giá trị không hợp lệ, tytScript sẽ gặp lỗi:

Loại chung này trả về loại được truyền dưới dạng tham số loại. Hãy tưởng tượng bạn đã triển khai loại này với đoạn mã sau: 12 , Def: 12, Ghi: 13, }, Def: { ABC: 12, Def: null, Ghi: 17, }, Ghi: { ABC: 13, Def: 17, Ghi: null, }, Không Lời hứa .

Vì chi phí vận chuyển giữa abc và chính nó không còn NULL , typcript sẽ ném lỗi sau:

Trong trường hợp này, loại B sẽ là loại Số .

Các loại chung chung thường được sử dụng để tạo các loại trợ giúp, đặc biệt là khi sử dụng các loại ánh xạ. TalleScript cung cấp nhiều loại trợ giúp được xây dựng sẵn. Một ví dụ như vậy là ? KEYYPART1 Mở rộng Keyof T age and extensions property with the pickObjectKeys[] function. The value of ageAndExtensions would be as follows:

Tạo các loại ánh xạ với generic

Loại Một phần Ở đây đưa vào một loại, lặp lại các loại thuộc tính của nó, sau đó trả về chúng là tùy chọn trong một loại mới. .

LƯU Ý: Kể từ một phần đã được tích hợp vào Typecript, hãy biên dịch mã này vào môi trường TypeRcript của bạn sẽ khai báo lại một phần và ném lỗi. Việc thực hiện một phần được trích dẫn ở đây chỉ dành cho mục đích minh họa. Loại ánh xạ và dựa vào generic. Trong phần này, bạn sẽ thấy cách tạo một loại ánh xạ. : T, keys: K[]] { let result = {} as Pick for [const key of keys] { if [key in obj] { result[key] = obj[key] } } return result } const language = { name: "TypeScript", age: 8, extensions: ['ts', 'tsx'] } const ageAndExtensions = pickObjectKeys[language, ['age', 'extensions']]

Để xem các loại chung của Generic mạnh mẽ như thế nào, hãy tưởng tượng rằng bạn có một đối tượng theo nghĩa đen lưu trữ chi phí vận chuyển từ một cửa hàng đến tất cả các cửa hàng khác trong mạng lưới phân phối kinh doanh của bạn. Mỗi cửa hàng sẽ được xác định bởi một mã ba ký tự, như thế này: isstringType : is assigned a type that is the union of the keys in T. The obj function parameter is then set to whatever type T represents, and keys to an array of whatever type K represents. Since T in the case of the language object sets age as a number and extensions as an array of strings, the variable ageAndExtensions will now be assigned the type of an object with properties age: number and extensions: string[].

Đồn tin đồn { ABC: { ABC: NULL, Def: 12, Ghi: 13, }, Def: { ABC: 12, Def: null, Ghi: 17, }, Ghi: { ABC: 13, Def: 17, Ghi: null, }, Không Nestedomit . Loại tiện ích này sẽ có thể bỏ qua các trường từ một đối tượng, giống như keys parameter based on the object you provided. This is shown in the following screenshot:

Đối tượng này là một tập hợp các đối tượng đại diện cho vị trí cửa hàng. Trong mỗi địa điểm cửa hàng, có các thuộc tính đại diện cho chi phí để vận chuyển đến các cửa hàng khác. Ví dụ, chi phí để giao hàng từ

Để đảm bảo rằng các vị trí cho các cửa hàng khác có giá trị nhất quán và vận chuyển cửa hàng chính nó luôn là NULL , bạn có thể tạo một chung chung Loại trợ giúp:

Một kịch bản sử dụng cho booleanfields Loại đang tạo một đối tượng Tùy chọn. Hãy tưởng tượng bạn có một mô hình cơ sở dữ liệu, như

Loại

Bạn có thể sử dụng nó như thế này:

Trong ví dụ này,

Mã này hiện đang thực thi hình dạng loại. Nếu bạn đặt bất kỳ phím nào thành giá trị không hợp lệ, tytScript sẽ gặp lỗi:

... Const Giao hàng: IfSameKeyThanparentTotherTyTyType 12 , Def: 12, Ghi: 13, }, Def: { ABC: 12, Def: null, Ghi: 17, }, Ghi: { ABC: 13, Def: 17, Ghi: null, }, Không : T]: T { return value; }

Vì chi phí vận chuyển giữa abc và chính nó không còn NULL , typcript sẽ ném lỗi sau: : Omit , which is the type of the first argument, then set the return type to be the same with : T.

Đầu ra

Bây giờ bạn đã thử sử dụng Generic trong các giao diện, các lớp và các loại trợ giúp tùy chỉnh. Tiếp theo, bạn sẽ khám phá thêm một chủ đề đã đưa ra một vài lần trong hướng dẫn này: tạo các loại ánh xạ với generic. Đúng

Tạo các loại ánh xạ với generic? KEYYPART1 Mở rộng Keyof T , which is the exact number that you passed in. TypeScript here is inferring the generic type from the calling code itself. This way the calling code does not need to pass any type parameters. You can also be explicit and set the generic type parameters to the type you want:

Khi làm việc với Typecript, có những lúc bạn cần tạo một loại nên có cùng hình dạng như một loại khác. Điều này có nghĩa là nó phải có cùng các thuộc tính, nhưng với loại thuộc tính được đặt thành một thứ khác nhau. Đối với tình huống này, sử dụng các loại ánh xạ có thể sử dụng lại hình dạng loại ban đầu và giảm mã lặp lại trong ứng dụng của bạn. [123];

Trong Typecript, cấu trúc này được gọi là Loại ánh xạ và dựa vào generic. Trong phần này, bạn sẽ thấy cách tạo một loại ánh xạ. number. By passing in the type with the code, you are explicitly letting TypeScript know that you want the generic type parameter T of the identity function to be of type number. This will enforce the number type as the argument and the return value.

Hãy tưởng tượng bạn muốn tạo một loại, được cung cấp một loại khác, trả về một loại mới trong đó tất cả các thuộc tính được đặt để có boolean giá trị. Bạn có thể tạo loại này với đoạn mã sau:

Các loại có điều kiện là loại chung có loại kết quả khác nhau tùy thuộc vào một số điều kiện. Ví dụ: hãy xem loại khác nhau

Trong loại này, bạn đang sử dụng cú pháp

Điều này tạo ra một loại mới gọi là k , được liên kết với tên của thuộc tính hiện tại. Điều này có thể được sử dụng để truy cập loại thuộc tính này trong loại ban đầu bằng cách sử dụng cú pháp t [k] . Trong trường hợp này, bạn đang đặt loại thuộc tính thành boolean . result would have the type { name: string } instead.

Một kịch bản sử dụng cho

Bạn có thể sử dụng booleanfields chung trên loại mô hình hiện có để trả về một loại mới có cùng hình dạng với mô hình, nhưng với tất cả Các trường được đặt để có Boolean , như trong mã được tô sáng sau:

loại booleanfields Nhập userfetchoptions = booleanfields chấp nhận hai tham số loại: Promise, which is the return type of the json[] call on the fetchs response object.

Trong ví dụ này, userfetchoptions sẽ giống như tạo nó như thế này: Bất kỳ có nghĩa là bất kỳ giá trị JavaScript nào và bằng cách sử dụng nó, bạn đang mất kiểm tra loại tĩnh, một trong những lợi ích chính của TypeRcript. Nếu bạn biết rằng API sẽ trả về một đối tượng trong một hình dạng nhất định, bạn có thể thực hiện loại chức năng này an toàn bằng cách sử dụng Generic:

Nhập userfetchoptions = { Email: Boolean; Tên: Boolean; Không[path: string]: Promise { const response = await fetch[`//example.com/api${path}`]; return response.json[]; }

Khi tạo các loại ánh xạ, bạn cũng có thể cung cấp các sửa đổi cho các trường. Một ví dụ như vậy là loại chung hiện có có sẵn trong Taletcript có tên readonly . Lời hứa .

Viết sau getreturntype Loại để minh họa điều này: , you must return a Promise object. The TypeScript Promise type is itself a generic type that accepts the type of the value the promise resolves to.

LƯU Ý: Kể từ ReadOnly đã được tích hợp vào Typecript, hãy biên dịch mã này vào môi trường TypeRcript của bạn sẽ khai báo lại readonly và ném lỗi. Việc thực hiện readonly được trích dẫn ở đây chỉ dành cho mục đích minh họa.

Chú ý Công cụ sửa đổi ReadOnly được thêm vào dưới dạng tiền tố cho [K in Keyof T] Phần trong mã này. Hiện tại, hai công cụ sửa đổi có sẵn có thể được sử dụng trong các loại ánh xạ là readonly , phải được thêm vào dưới dạng tiền tố cho thuộc tính và < / a> ? Công cụ sửa đổi, có thể được thêm vào như một hậu tố cho thuộc tính. ? Modife đánh dấu trường là tùy chọn. Cả hai công cụ sửa đổi có thể nhận được tiền tố đặc biệt để chỉ định xem công cụ sửa đổi có nên bị xóa [ - ] hoặc đã thêm [ + < / a> ]. Nếu chỉ các công cụ sửa đổi được cung cấp, + được giả định. getreturntype . Loại chung này chấp nhận một tham số loại duy nhất,

Bây giờ bạn có thể sử dụng các loại ánh xạ để tạo các loại mới dựa trên các loại loại mà bạn đã tạo, bạn có thể chuyển sang trường hợp sử dụng cuối cùng cho generics: gõ có điều kiện.? KEYYPART1 Mở rộng Keyof T

Tạo các loại có điều kiện với generic { Trường: t Constructor [lĩnh vực: t ] { this.field = Field. Không Không data variable now has the type User[] instead of any.

Trong phần này, bạn sẽ thử một tính năng hữu ích khác về Generic inStcript: Tạo các loại có điều kiện. Đầu tiên, bạn sẽ chạy qua cấu trúc cơ bản của việc gõ có điều kiện. Sau đó, bạn sẽ khám phá một trường hợp sử dụng nâng cao bằng cách tạo một loại có điều kiện mà bỏ sót các trường lồng nhau của loại đối tượng dựa trên ký hiệu DOT. As you are using await to asynchronously process the result of your function, the return type is going to be the type of T in Promise, which in this case is the generic type ResultType.

Cấu trúc cơ bản của gõ có điều kiện

Các loại có điều kiện là loại chung có loại kết quả khác nhau tùy thuộc vào một số điều kiện. Ví dụ: hãy xem loại khác nhau isstringType : ResultType would be bound to unknown. Take for example the following implementation:

Các loại có điều kiện là một trong những tính năng linh hoạt nhất có sẵn trong Taletcript và cho phép tạo một số loại tiện ích nâng cao. Trong phần này, bạn sẽ khám phá một trong những trường hợp sử dụng này bằng cách tạo một loại có điều kiện được gọi là

Trong mã này, bạn đang tạo một loại chung chung mới gọi là isstringType nhận được một tham số loại duy nhất, t . Bên trong định nghĩa về loại của bạn, bạn đang sử dụng một cú pháp trông giống như một biểu thức có điều kiện sử dụng toán tử ternary trong JavaScript: T mở rộng chuỗi? Đúng: Sai . Biểu thức có điều kiện này đang kiểm tra nếu loại t Mở rộng loại chuỗi . Nếu có, loại kết quả sẽ là loại chính xác TRUE ; Mặt khác, nó sẽ được đặt thành loại Sai . Chức năng để minh họa điều này. Bạn cũng sẽ khám phá một ví dụ không đồng bộ về thời điểm để chuyển các tham số loại thành trực tiếp chung của mình và cách tạo các ràng buộc và giá trị mặc định cho các tham số loại chung của bạn. data. But since the type of data is unknown, this code will not be able to access a property of the object.

Lưu ý: Biểu thức có điều kiện này được đánh giá trong quá trình biên dịch. Tallecript chỉ hoạt động với các loại, vì vậy hãy đảm bảo luôn đọc các mã định danh trong một khai báo loại dưới dạng các loại, không phải là giá trị. Trong mã này, bạn đang sử dụng loại chính xác của từng giá trị boolean, Ngay sau loại chung, như thế này:

Để thử loại có điều kiện này, hãy truyền một số loại làm tham số loại của nó: Thỉnh thoảng có cấu trúc đa cấp của các thuộc tính lồng nhau. Sử dụng

Xây dựng loại có điều kiện này sẽ sử dụng nhiều tính năng có sẵn trong Taletcript, như các loại nghĩa đen, generic, loại có điều kiện và các loại ánh xạ. là một tính năng cơ bản của các ngôn ngữ được viết tĩnh, cho phép các nhà phát triển vượt qua các loại dưới dạng tham số đến loại khác, hàm hoặc cấu trúc khác. Khi một nhà phát triển tạo thành phần của họ một thành phần chung, họ cung cấp cho thành phần đó khả năng chấp nhận và thực thi gõ được truyền trong khi thành phần được sử dụng, giúp cải thiện tính linh hoạt của mã, làm cho các thành phần có thể sử dụng lại và loại bỏ trùng lặp. generic parameter when calling the fetchApi function, as it has a default type of Record. This means TypeScript will recognize data as an object with keys of type string and values of type any, allowing you to access its properties.

Trong mã này, bạn đang tạo hai loại, A và B < AI = 4>. Loại A là loại của chuỗi chữ "abc" , Trong khi các loại B là loại đối tượng có thuộc tính có tên tên Loại Chuỗi . Sau đó, bạn đang sử dụng cả hai loại với isstringType loại có điều kiện và lưu trữ loại kết quả thành hai loại mới, Kết quả < / a> và Kết quả .

Nếu bạn kiểm tra loại kết quả Kết quả và Kết quả , bạn sẽ nhận thấy rằng loại được đặt thành loại chính xác TRUE Và đó là Kết quả được đặt thành Sai . Điều này là chính xác, như A Không mở rộng chuỗi Loại và b không mở rộng chuỗi chuỗi , vì nó được đặt thành loại một đối tượng có tên thuộc tính của loại chuỗi . .

Một tính năng hữu ích của các loại có điều kiện là nó cho phép bạn suy ra thông tin loại bên trong mở rộng mệnh đề sử dụng từ khóa đặc biệt Infer . Loại mới này sau đó có thể được sử dụng trong True Chi nhánh của điều kiện. Một cách sử dụng có thể cho tính năng này là lấy loại trả về bất kỳ loại chức năng nào. . StringifyObjectKeyValues ​​.

Viết

gõ Nestedomit = KeyStoomit mở rộng `$ {infer keypart1}. $ {infer keyypart2} `

Trong mã này, bạn đang tạo một loại chung mới, là một loại có điều kiện được gọi là getreturntype . Loại chung này chấp nhận một tham số loại duy nhất, t . Bên trong Tuyên bố loại chính nó, bạn đang kiểm tra xem loại

Sử dụng loại của bạn với đoạn mã sau: Đúng của điều kiện:

loại Nestedomit ? KEYYPART1 Mở rộng Keyof T

Trong mã này, bạn đang tạo một hàm gọi là một số chức năng , trả về True . Bạn đang sử dụng TypeOf Toán tử để truyền vào loại chức năng này với getreturntype < AI = 8> Chung và lưu trữ loại kết quả trong returnTyPoOfsomeFocation Loại. is known as generic type constraint, and it allows you to specify that your generic type must be assignable to the type that comes after the extends keyword. In this case, Record indicates an object with keys of type string and values of type any. You can make your type parameter extend any valid TypeScript type.

Là loại của bạn Biến là một chức năng, loại có điều kiện sẽ đánh giá TRUE Chi nhánh của điều kiện. Điều này sẽ trả về loại u là kết quả. Loại U đã được suy ra từ loại trả về của hàm, trong trường hợp này là Boolean . Nếu bạn kiểm tra loại returntypeofsomeFocation , bạn sẽ thấy rằng nó được đặt chính xác để có boolean Loại. Đúng Chi nhánh. Điều này xây dựng một loại mới là một giao điểm của hai loại khác. Loại đầu tiên là kết quả của việc sử dụng {} as { [K in keyof T]: string } code sets the type of the initial value of the accumulator to { [K in keyof T]: string } by using a type cast on an empty object, {}. The type { [K in keyof T]: string } creates a new type with the same keys as T, but with all the values set to have the string type. This is known as a mapped type, which this tutorial will explore further in a later section.

Trường hợp sử dụng loại điều kiện tiên tiến stringifyobjectkeyValues ​​ Chức năng:

Các loại có điều kiện là một trong những tính năng linh hoạt nhất có sẵn trong Taletcript và cho phép tạo một số loại tiện ích nâng cao. Trong phần này, bạn sẽ khám phá một trong những trường hợp sử dụng này bằng cách tạo một loại có điều kiện được gọi là

Sử dụng Nestedomit Chung, bạn sẽ có thể sử dụng loại như thể hiện trong ví dụ sau: < / a >. Chức năng để minh họa điều này. Bạn cũng sẽ khám phá một ví dụ không đồng bộ về thời điểm để chuyển các tham số loại thành trực tiếp chung của mình và cách tạo các ràng buộc và giá trị mặc định cho các tham số loại chung của bạn.

Trong Sai Chi nhánh của điều kiện nội bộ, bạn trả về loại hiện tại bị ràng buộc với T < / a> , như thể KEYPART1 không phải là khóa hợp lệ của t :

Mã này khai báo một loại có tên

Xây dựng loại có điều kiện này sẽ sử dụng nhiều tính năng có sẵn trong Taletcript, như các loại nghĩa đen, generic, loại có điều kiện và các loại ánh xạ.

Để thử chung chung này, hãy bắt đầu bằng cách tạo một loại chung gọi là

loại Nestedomit

Tham số loại đầu tiên được gọi là T , đây phải là loại có thể gán cho Ghi lại Loại. Đây sẽ là loại đối tượng bạn muốn bỏ qua các thuộc tính từ đó. Tham số loại thứ hai được gọi là KeyStoomit , phải thuộc loại chuỗi . Bạn sẽ sử dụng điều này để chỉ định các phím bạn muốn bỏ qua loại t .

Tiếp theo, kiểm tra xem keystoomit có thể gán cho loại $ {infer keypart1}. $ { Infer KeyyPart2} Bằng cách thêm mã được tô sáng sau:

gõ Nestedomit = KeyStoomit mở rộng `$ {infer keypart1}. $ {infer keyypart2} ` Kết quả const = danh tính [123]; { Trường: t Không

Tại đây, bạn đang sử dụng một loại chuỗi chữ mẫu trong khi tận dụng các loại có điều kiện để suy ra hai loại khác bên trong chính mẫu. Bằng cách suy ra hai phần của loại dây theo nghĩa đen, bạn đang chia chuỗi thành hai chuỗi khác. Phần đầu tiên sẽ được gán cho loại KEYYPART1 và sẽ chứa mọi thứ trước dấu chấm đầu tiên. Phần thứ hai sẽ được gán cho loại KEYYPART2 và sẽ chứa mọi thứ sau dấu chấm đầu tiên. Nếu bạn đã vượt qua

Tiếp theo Bạn sẽ thêm Toán tử Ternary để xác định

loại Nestedomit ? KEYYPART1 Mở rộng Keyof T t Constructor [lĩnh vực: t ] { this.field = Field. Không Không

Điều này sử dụng KEYPART1 mở rộng Keyf T để kiểm tra xem KEYYPART1 là một thuộc tính hợp lệ của loại t . Trong trường hợp bạn có khóa hợp lệ, hãy thêm mã sau để tạo điều kiện đánh giá với giao điểm giữa hai loại: HttpApplication class that is used to handle HTTP requests to your API, and that some context value is going to be passed around to every request handler. One such way to do this would be:

loại Nestedomit

OMIT là một loại được xây dựng bằng cách sử dụng Omit Helper được vận chuyển theo mặc định với tyremony. Tại thời điểm này, KEYYPART1 không có trong ký hiệu DOT: Nó sẽ chứa tên chính xác của một trường có chứa các trường lồng nhau mà bạn muốn bỏ qua loại ban đầu. Bởi vì điều này, bạn có thể sử dụng loại tiện ích hiện có. context whose type is passed in as the type of the argument for the handler function in the get method. During usage, the parameter type passed to the get handler would correctly be inferred from what is passed to the class constructor.

Bạn đang sử dụng Omit để xóa một số trường lồng nhau bên trong t [KEYYPART1] , và để làm điều đó, bạn phải xây dựng lại loại T [KEYYPART1] . Để tránh xây dựng lại toàn bộ t , bạn sử dụng Omit để xóa chỉ KEYYPART1 Từ T , giữ nguyên các trường khác. Sau đó, bạn đang xây dựng lại t [KEYPART1] Trong loại trong phần tiếp theo.

[newkey trong keypart1]: Nestedomit

Video liên quan

Chủ Đề