Typescript – a real world story of adoption in TFS
- Bug 987091:TFS.TestManagement.Controls.debug.js incorrect call to RegExp results in no matches ever
- Bug 986991:Call to baseConstructor missing “this” parameter in multiple places
- Bug 986997:Reference to undefined property of ActionManager puts this action worker at the beginning not the end – TFS.Agile.debug.js
- Bug 987103:Referenced to undefined location property should be path() in TFS.WorkItemTracking.debug.js
- Bug 987016:Unbinding of nonexisting functions in TFS.TestManagement.Controls.debug.js – refactoring job gone bad?
- Bug 987071:RichContentTooltip _setPosition calls a non-existing function – looks like casing typo
- Bug 987080:TFS.UI.Controls.Grids.debug.js _onToggle calls this._addSelection with mismatched parameters
- Bug 987086:_beginCopySelection in TFS.UI.Controls.Grids.debug.js references nonexisting property to determine if there is a selection
- Bug 986993:Missing ‘this’ parameter in call to base constructor in TFS.Agile.Boards.debug.js
- Bug 987104:Calls to Diag.assert* passing only one parameter when two are required
- Bug 986987:Missing resource string values in Area Iterations dialog
- Bug 987054:Incorrect resource reference in TFS.Build.debug.js
- Bug 987101:Spelling errors in resource references in TFS.WorkItemTracking.Controls.Query.debug.js
All told, it took us (1 dev) less than a week to write a tool (in Typescript, of course, :)) that would recognize Javadoc and the rest of our patterns and convert them to the corresponding Typescript constructs. It took about another week to run the tool, tweak our Javadoc comments (like filling in some that had been missed), update our build process, test the conversion, etc. Of course there’s more we can do with Typescript. For instance, we didn’t have any previous recognizable pattern for interface contracts – so there was nothing for the tool to use to generate the Typescript constructs. Over time, we’ll be going through by hand, as we have reason to revisit modules and further tightening up the Typescript. I expect we’ll find more issues that we don’t know about now.