Тип Function
просто сообщает компилятору, что он содержит функции, которым вы можете передавать любые аргументы, и может возвращать некоторое значение.squareFn
- это функция типа Function
, поэтому ей могут быть переданы любые аргументы.Функция, которую вы присвоили ей, принимает только один squareDescriptor
, но это не имеет значения.Единственный тип, который имеет значение, это тип переменной.
Чтобы получить это сообщение об ошибке, вам придется изменить объявление, чтобы оно не использовало Function
, а фактический тип функции, которую вы назначаете.Вы можете либо опустить тип, тогда компилятор выведет правильный тип для вас, либо явно добавить правильный тип.
let squareFn1 = (square : squareDescriptor) => {
return square.name;
}
// or
let squareFn2 : (square : squareDescriptor) => string = (square : squareDescriptor) => {
return square.name;
}