Задать вопрос
@DarCKoder

Для чего нужно это указывать тип второй раз?

interface SquareConfig {
    color?: string;
    width?: number;
}
 
function createSquare(config: SquareConfig): { color: string; area: number } {
    let newSquare = {color: "white", area: 100};
    if (config.color) {
        // Ошибка: Property 'collor' does not exist on type 'SquareConfig'
        newSquare.color = config.color;
    }
    if (config.width) {
        newSquare.area = config.width * config.width;
    }
    return newSquare;
}
 
let mySquare = createSquare({ color: "black" });
console.log(mySquare)


Интересует вот эта строка:
function createSquare(config: SquareConfig): { color: string; area: number } {


А точнее, то что написано после двоеточия.
Что это нам даёт?
  • Вопрос задан
  • 297 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 2
@Interface
То что идет после двоеточия - тип возвращаемого функцией значения. https://www.typescriptlang.org/docs/handbook/funct... Не очень понял про второй раз - первый это аргумент или return newSquare;. TS (современный по крайней мере) сам определит тип по такому return. Т.е. часть после двоеточия - необязательна, но добавляет наглядности
P. s. это также поможет избежать ошибки при попытке сделать невалидный return внутри функции
Ответ написан
Комментировать
k12th
@k12th
console.log(`You're pulling my leg, right?`);
  • Компилятор подскажет, если внутри функции ошибка и вы пытаетесь вернуть объект неправильного типа (например, опечатка collor вместо color).
  • Результат выполнения функции будет иметь определенный тип и IDE подскажет, какие у mySquare есть свойства, а компилятор выругается на попытку использовать несуществующие свойства.
  • Функция будет совместима по сигнатуре с другими аналогичными функциями (обработчики событий, action'ы в Redux и т.д.)


Я бы кстати вынес этот тип в отдельный интерфейс, так проще будет потом код разбирать, имхо.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 13:47
1800 руб./в час
18 дек. 2024, в 13:22
30000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект