diff --git a/core/lib/Drupal/Core/TypedData/DataDefinition.php b/core/lib/Drupal/Core/TypedData/DataDefinition.php
index 9d036a271628001469ddca48907ecab63079498c..937f243e450855768110da755e5c7bfab98e592e 100644
--- a/core/lib/Drupal/Core/TypedData/DataDefinition.php
+++ b/core/lib/Drupal/Core/TypedData/DataDefinition.php
@@ -275,13 +275,17 @@ public function getConstraint($constraint_name) {
   /**
    * Sets the array of validation constraints.
    *
-   * See \Drupal\Core\TypedData\TypedDataManager::getConstraints() for details.
+   * NOTE: This will override any previously set constraints. In most cases
+   * DataDefinition::addConstraint() should be used instead.
    *
    * @param array $constraints
-   *   The array of constraints.
+   *   The array of constraints. See
+   *   \Drupal\Core\TypedData\TypedDataManager::getConstraints() for details.
    *
-   * @return static
-   *   The object itself for chaining.
+   * @return $this
+   *
+   * @see \Drupal\Core\TypedData\DataDefinition::addConstraint()
+   * @see \Drupal\Core\TypedData\DataDefinition::getConstraints()
    */
   public function setConstraints(array $constraints) {
     $this->definition['constraints'] = $constraints;
diff --git a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
index 6ec3e82ab4b4dc82b317c3e7df2636f4c5680bf3..6dd943f886e2aa04d873a0724d1d2690731775ce 100644
--- a/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
+++ b/core/modules/comment/lib/Drupal/comment/Entity/Comment.php
@@ -252,7 +252,7 @@ public static function baseFieldDefinitions(EntityTypeInterface $entity_type) {
         'default_value' => '',
         'max_length' => 60,
       ))
-      ->setConstraints(array('CommentName' => array()));
+      ->addConstraint('CommentName', array());
 
     $fields['mail'] = FieldDefinition::create('email')
       ->setLabel(t('Email'))
diff --git a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListTextItem.php b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListTextItem.php
index 6180368435b299e02db4aa3a2c7c49c8e7851e2c..754d39748d3b156f335cdb0493fcd3eaf5de5f21 100644
--- a/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListTextItem.php
+++ b/core/modules/options/lib/Drupal/options/Plugin/Field/FieldType/ListTextItem.php
@@ -27,10 +27,9 @@ class ListTextItem extends ListItemBase {
    * {@inheritdoc}
    */
   public static function propertyDefinitions(FieldDefinitionInterface $field_definition) {
-    $constraints = array('Length' => array('max' => 255));
     $properties['value'] = DataDefinition::create('string')
       ->setLabel(t('Text value'))
-      ->setConstraints($constraints);
+      ->addConstraint('Length', array('max' => 255));
 
     return $properties;
   }
diff --git a/core/modules/user/user.module b/core/modules/user/user.module
index a97f6fcf3bf50bd2885a1205a72c6618b76a36ba..965167eee646d92a110fdeac22adf7d136c69c56 100644
--- a/core/modules/user/user.module
+++ b/core/modules/user/user.module
@@ -339,7 +339,7 @@ function user_load_by_name($name) {
  */
 function user_validate_name($name) {
   $definition = DataDefinition::create('string')
-    ->setConstraints(array('UserName' => array()));
+    ->addConstraint('UserName', array());
   $data = \Drupal::typedDataManager()->create($definition);
   $data->setValue($name);
   $violations = $data->validate();