Whenever i make changes in knockout.js files and html file inside web folder. I have to run "setup:upgrade" and "static deploy" again. Is there any solution to avoid doing this?
Yes - that is native flow of Magento 2 whenever you are doing any changes in JS file or CSS file you must have to run php bin/magento setup:static-content:deploy -f command.
For upgrade command - AKAIK you don't need to run each and every time when you change JS or HTML file. Upgrade command is only used when you are installing any new modules , and you might have database related changes in your existing module by Install/Upgrade Schema script.
So you don't need to run setup:upgrade command each time.
But for Assets like JS and CSS - This is native flow as assets are always served from pub/static directory so you must need to run that command.