отсутствующий аргумент typescript автоматически присваивается

#typescript

Вопрос:

У меня есть эта функция, использующая typescript:

 function more(argv: {a: number, b?: string}): number{
    
    console.log( b)
    return a
}
 

и я называю это так:

 let arc = more({a: 5})
 

В консоли я получаю 10 . Я ожидал undefined или какой-то ошибки.

Откуда берется число 10?

Ответ №1:

В этом случае вы регистрируете консоль «b» и возвращаете «a». Однако, похоже, вы хотите, чтобы консоль регистрировала «argv.b» и возвращала «argv.a». Поэтому я считаю, что на самом деле происходит то, что существует некоторая существующая переменная «b», определенная в другом месте и регистрируемая здесь. В любом случае, если вы обновите переменные в функции, как это сделал я, вы получите ожидаемый результат.

Комментарии:

1. нет, я не хотел регистрироваться argv.b , но b . Мне было любопытно узнать значение b , т. Е. присваивается ли значение параметрическому аргументу, который не указан. Но вы правы: в другом месте программы определены a let a и a let b .

2. Моя точка зрения такова: у вашей функции нет аргументов с именем b. У него есть один с именем argv, у которого есть свойства с именами » a » и «b», но вы ничего не делаете с этим аргументом или его свойствами в этой функции.