TypedMVVM developed by Davide Zordan is a collection of samples and libraries for writing Windows Store apps using WinJS, TypeScript and MVVM. It enable developers to make use of TypeScript in a real world scenario by applying separation of concerns via the MVVM pattern in a simple Windows Store navigation app developed with WinJS.
According to Davide, all the .js source files has been converted to TypeScript with new folder structure including classes/interface implementations. While designData provides implementation for design-time data to enable Blendability, libs include TypeScript definitions and TypedMVVM core classes, particularly RelayCommand<T> and ViewModelBase. The package also includes interfaces for Services, ViewModels and ViewModelFactory in addition to concrete ViewModels implementations and views definitions.
InfoQ had a chat with Davide, Software Architect, Developer and Microsoft MVP to know more about TypedMVVM.
InfoQ: Can you share with us the purpose behind the development of TypedMVVM?
I like writing code in a structured way and embracing best practices like separation of concerns, object orientation, modularization, testability, extensibility.
TypeScript is providing developers with a lot of features that are, in my opinion, fundamental for writing professional application. In particular, the possibility to perform type checking and inference, refactoring and full intellisense support is a must need when writing complex and large applications. For these reasons I decided to implement a simple set of classes for illustrating how the MVVM design pattern could be applied in a WinJS navigation application using TypeScript.
InfoQ: What is the difference between Windows store apps built with and without TypedMVVM?
Traditional Windows Store apps built with WinJS use JavaScript as a core language. TypedMVVM uses TypeScript as a core language which provides support for static typing, interfaces, classes (just to name a few) but, at the end, compiles to plain JavaScript. It also contains some helper classes to help the developer for getting started with the ViewModel pattern in order to write code which is properly architected and testable.
InfoQ: What kind of applications cn be developed using TypedMVVM?
The current target is Windows Store apps using the WinJS framework.
InfoQ: Are you aware of any real world application where TypedMVVM has been implemented?
The project has just been released so I don't have, at the moment, information about real projects.
InfoQ: Can you share the future roadmap of TypedMVVM?
I'm still in the process of defining the roadmap, however I'm thinking about features like inversion of control, loose coupling messaging and application specific services: these ones would be really useful.