, Не так ли?
риведенного ниже кода,
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});
Какова цель проверки избыточного имущества, во втором случае?