I think they should be in the class that they represent. That way loading can look like this:
> if (state.type === DataSet.getType()) {
>     var something = new DataSet(state);
> }
> else if (state.type === DataSubset.getType()) {
>     var something = new DataSubset(state);
> }

For Widgets in particular this will be necessary because I'll have to iterate through the list of available widgets. I can't have a static switch statement like with DataSets, so having a separate constants file would make things more complicated.