Функции
Функций играют очень важную роль в системе типов TypeScript, они являются основными строительными блоками составной системы.
Описание параметров
Вы можете описать параметры функции так же, как вы можете описать другие переменные:
// variable annotation
let sampleVariable: { bar: number };
// function parameter annotation
function foo(sampleParameter: { bar: number }) {}Здесь мы используем встроенное описание типов, кроме того, вы также можете использовать интерфейсы и другие методы.
Возвращаемый тип
Вы можете описывать возвращаемый тип тем же стилем, что и переменную после списка параметров функции, как в примере :Foo:
interface Foo {
foo: string;
}
// Return type annotated as `: Foo`
function foo(sample: Foo): Foo {
return sample;
}Здесь мы используем interface, но вы можете использовать другие методы, такие как встроенные аннотации.
Как правило, вам не нужно описывать возвращаемый тип функции, потому что это может быть выведено компилятором автоматически:
Тем не менее, часто бывает полезно добавить эти аннотации, чтобы помочь разрешить ошибки, такие как:
Если вы не планируете возвращать что-либо из функции, вы можете пометить это как :void. Вы можете удалить void, TypeScript выведет тип за вас.
Необязательные параметры
Так вы можете пометить параметры как необязательные:
В качестве альтернативы, когда вызывающая сторона не предоставляет параметр, вы можете указать значение по умолчанию (= someValue после объявления параметра):
Перегрузка
TypeScript позволяет объявлять перегрузки функций. Это полезно для документации + безопасности типов. Рассмотрим следующий код:
Если вы внимательно посмотрите на код, вы обнаружите, что значения a, b, c и d будут меняться в зависимости от количества переданных параметров. Эта функция также требует только 1, 2 или 4 параметра. Вы можете использовать перегрузку функций для обеспечения и документирования этих ограничений. Вам нужно только объявить заголовок функции несколько раз. Последний заголовок функции фактически активен в теле функции, но не доступен извне.
Это выглядит так:
Здесь первые три заголовка функции могут эффективно вызывать заполнение:
Конечно, важно, чтобы окончательное объявление (реальное объявление, видимое внутри функции) было совместимо со всеми перегрузками. Это потому, что это истинная природа вызова функции, которую тело функции должно учитывать.
Объявление функции
Быстрый старт: аннотации типов - это способ описать существующие типы реализации
В отсутствие реализации функции существует два способа объявить тип функции:
Два примера в приведенном выше коде абсолютно одинаковы. Однако, когда вы хотите использовать перегрузку функций, вы можете использовать только первый способ:
Last updated
Was this helpful?