post_type internal ID?

No there isn’t, and it isn’t necessary. Post type names are their own unique identifiers.

The primary reason there are no numeric IDs is because post types are registered on every page load in PHP, no table exists in the database for them, which means no row IDs. So there is no use for a unique ID that the post name doesn’t already accomplish.

For this reason, you’re perfectly fine to use the post types name in your ID attributes, post type names can’t clash.

The same is true of taxonomy names, 2 taxonomies cannot share the same name.