@ -1,20 +1,20 @@
|
||||
---
|
||||
title: Generics
|
||||
localeTitle: Дженерики
|
||||
localeTitle: Дженерики (параметризованные типы)
|
||||
---
|
||||
## Дженерики
|
||||
|
||||
Разработчики могут использовать `Generics` для указания ограничений типов для классов, членов экземпляра, статических членов и функций.
|
||||
Разработчики могут использовать `Generics` для указания ограничений на типы классов, членов экземпляра объекта, статических членов и функций.
|
||||
|
||||
### Что делают дженерики?
|
||||
|
||||
По сути, они служат заполнителями для типов, так что компонент может использоваться в разных местах вашего приложения путем размещения разных типов.
|
||||
По сути, они служат заполнителями для типов; компоненты параметризованного типа могут использоваться в разных местах вашего приложения путем указания разных типов.
|
||||
|
||||
### Какая проблема решает?
|
||||
### Какую проблему решают дженерики?
|
||||
|
||||
Предположим, вы хотели убедиться, что входные и возвращаемые значения для функции имеют один и тот же тип, вот где появляются дженерики.
|
||||
Предположим, вы хотите убедиться, что входные и возвращаемые значения для функции имеют один и тот же тип - здесь и появляются дженерики.
|
||||
|
||||
##### функции
|
||||
##### Функции
|
||||
|
||||
```typescript
|
||||
function printMessage(arg: any): any {
|
||||
@ -25,7 +25,7 @@ function printMessage(arg: any): any {
|
||||
const myMessage: string = printMessage(1);
|
||||
```
|
||||
|
||||
Как видно из вышеизложенного, передача `any` типа аргумента в функции, а также типа возврата не является идеальной, поскольку информация о типе теряется в процессе.
|
||||
Как видно из вышеизложенного, указание типа `any` у аргумента в функции и возвращемого значения не является идеальным, поскольку теряется информация о типе.
|
||||
|
||||
```typescript
|
||||
// updated example
|
||||
@ -40,7 +40,7 @@ function printMessage(arg: any): any {
|
||||
const myMessage: number = printMessage(1);
|
||||
```
|
||||
|
||||
Включение `<T>` с помощью функции сообщает TypeScript, что оно является общим, и передача этого в качестве ссылки заставит TypeScript знать, что связанные с ним значения имеют один и тот же тип.
|
||||
Добавление `<T>` рядом с именем функции сообщает TypeScript, что она является параметризованной, и использование такого синтаксиса функции заставит TypeScript знать, что связанные с ней значения имеют один и тот же тип.
|
||||
|
||||
##### Классы
|
||||
|
||||
@ -68,4 +68,4 @@ class Person {
|
||||
// foo will be of type 'guest' because it's being passed in as the argument
|
||||
const foo = getUser(guest);
|
||||
|
||||
```
|
||||
```
|
||||
|
Reference in New Issue
Block a user