typescript enum constraint