diff --git a/core/lib/Drupal/Core/Entity/TypedData/EntityDataDefinition.php b/core/lib/Drupal/Core/Entity/TypedData/EntityDataDefinition.php
index e3302a5..78884cc 100644
--- a/core/lib/Drupal/Core/Entity/TypedData/EntityDataDefinition.php
+++ b/core/lib/Drupal/Core/Entity/TypedData/EntityDataDefinition.php
@@ -7,6 +7,7 @@
 
 namespace Drupal\Core\Entity\TypedData;
 
+use Drupal\Component\Utility\String;
 use Drupal\Core\TypedData\ComplexDataDefinitionBase;
 
 /**
@@ -101,6 +102,12 @@ public function getEntityTypeId() {
    * {@inheritdoc}
    */
   public function setEntityTypeId($entity_type_id) {
+    // Fail with an exception for entity types which don't support type data.
+    $entity_type_class = \Drupal::entityManager()->getDefinition($entity_type_id)->getClass();
+    if (!in_array('Drupal\Core\TypedData\TypedDataInterface', class_implements($entity_type_class))) {
+      throw new \InvalidArgumentException(String::format('The %entity_type entity type does not support data definitions.', array('%entity_type' => $entity_type_id)));
+    }
+
     return $this->addConstraint('EntityType', $entity_type_id);
   }
 
diff --git a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTypedDataDefinitionTest.php b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTypedDataDefinitionTest.php
index 3704dd9..f0de0b8 100644
--- a/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTypedDataDefinitionTest.php
+++ b/core/modules/system/lib/Drupal/system/Tests/Entity/EntityTypedDataDefinitionTest.php
@@ -114,6 +114,16 @@ public function testEntities() {
     // entity data types variants.
     $this->assertEqual($this->typedDataManager->createDataDefinition('entity'), EntityDataDefinition::create());
     $this->assertEqual($this->typedDataManager->createDataDefinition('entity:node'), EntityDataDefinition::create('node'));
+
+    // Test that creating a definition for an entity type which doesn't support
+    // typed data doesn't work.
+    try {
+      EntityDataDefinition::create('node_type');
+      $this->fail("Creating data definition objects for entities which don't support typed data works.");
+    }
+    catch (\Exception $e) {
+      $this->pass("Creating data definition objects for entities which don't support typed data doesn't work.");
+    }
   }
 
   /**
