Q:

Should I prefer namespaces or classes with static functions?

In TypeScript there are two possible ways to bundle and expose a group of functions. One is by exporting a class that contains nothing but public static functions. The other is by creating a namespace and and then exporting functions from within it. As near as I can tell this produces identical behavior within TypeScript (though probably generates different JavaScript.) Is there a method that is prefered, or is it pretty much down to personal preference.
namespace MyCollection {
    export function doSomething(macguffin: any) {
        //todo: implement doSomething
    }
}

export class MyCollection {
    public static doSomething(macguffin: any) {
        //todo: implement doSomething
    }
}

A:

It's probably best to use modules instead of namespaces or static class methods. From the TypeScript official documentation page on namespaces and modules:

Namespaces are simply named JavaScript objects in the global namespace. [...] Just like all global namespace pollution, it can be hard to identify component dependencies, especially in a large application.
[...]
Modules provide for better code reuse, stronger isolation and better tooling support for bundling.
[...]
Starting with ECMAScript 2015, modules are native part of the language, and should be supported by all compliant engine implementations. Thus, for new projects modules would be the recommended code organization mechanism.

