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