, Не так ли?

риведенного ниже кода,

interface SquareConfig{
    color?: string;
    width?: number;
}

interface Square{
    color: string;
    area: number;
}

function createSquare(config: SquareConfig): Square {

    let newSquare:Square = {color: "white", area: 100};
    if (config.color) {
        newSquare.color = config.color;
    }
    if (config.width) {
        newSquare.area = config.width * config.width;
    }
    return newSquare;
}

ниже аргумента (myObj) выводится как типany разрешено передавать в качестве аргумента средством проверки типов во время компиляции. JS-код использует утку во время выполнения.

let myObj = {colour: 'red', width: 100};

let mySquare = createSquare(myObj);

Во втором случае ниже аргумента (кромеSquareConfig type) не разрешено проходить мимо проверки типов во время компиляции. Как указано в справочнике:Объектные литералы получают специальную обработку и подвергаются избыточной проверке свойств при назначении их другим переменным или передаче их в качестве аргументов.

let mySquare = createSquare({colour: 'red', width: 100});

Какова цель проверки избыточного имущества, во втором случае?

Ответы на вопрос(1)

Ваш ответ на вопрос