Use Typescript to help migrate/upgrade code
I am tasked with migrating a large javascript codebase from using the beta version of firebase-functions to the latest. Like most major upgrades, there are many API changes to deal with. Here's an example cloud function:
Beta version with node 6:
exports.dbCreate = functions.database.ref('/path').onCreate((event) => {
  const createdData = event.data.val(); // data that was created
});Latest version with node 10:
exports.dbCreate = functions.database.ref('/path').onCreate((snap, context) => {
  const createdData = snap.val(); // data that was created
});The parameters changed for
onCreate.
In the real codebase there are hundreds of cloud functions like this and they all have varying API changes to be made. With no code-mod in sight, I'm on my own to figure out an effecient way to upgrade. Enter Typescript.
After upgrading the dependencies to the latest versions I added a tsconfig:
{
  "compilerOptions": {
    "module": "commonjs",
    "outDir": "lib",
    "target": "es2017",
    "allowJs": true,
    "checkJs": true,
  },
  "include": ["src"]
}The key is to enable
checkJsso that the Typescript compiler reports errors in javascript files.
And running tsc --noEmit against the codebase provided me with a list of 200+ compiler errors pointing me to every change required.
