Argument of type 'ValidatorFn' is not assignable to parameter of type 'ValidatorFn | ValidatorFn[]'
<p>I have this piece of code in an Angular2 app (RC4).</p>

<pre><code>const required = Validators.required;
const compose = Validators.compose;
const lessThan = CustomValidator.valueLessThan;
const greaterThan = CustomValidator.valueMoreThan;

(&lt;FormControl&gt;this.group.controls['contentsCost']).setValidators(compose([required, greaterThan(200000)]));
(&lt;FormControl&gt;this.group.controls['rebuildCost']).setValidators(compose([required, lessThan(70000), greaterThan(750000)]));
</code></pre>

<p>and when I run <code>npm run server</code> I get:</p>

<pre><code>Argument of type 'ValidatorFn' is not assignable to parameter of type 'ValidatorFn | ValidatorFn[]'.
Type 'ValidatorFn' is not assignable to type 'ValidatorFn[]'.
Property 'push' is missing in type 'ValidatorFn'.
</code></pre>

<p>What's wrong? What's worst(!) - the code above actually works fine in the browser and does exactly what I want!!! Very confusing - the code works and it throws errors on the same time.</p>

<p><strong>UPDATE</strong></p>

<p>As suggested in the comment, I've tried to wrap <code>compose</code> in an array and here is what I've got:</p>

<pre><code>  Argument of type 'ValidatorFn[]' is not assignable to parameter of type 'ValidatorFn | ValidatorFn[]'.
Type 'ValidatorFn[]' is not assignable to type 'ValidatorFn[]'.
  Type 'ValidatorFn' is not assignable to type 'ValidatorFn'.
    Types of parameters 'c' and 'c' are incompatible.
      Type 'AbstractControl' is not assignable to type 'AbstractControl'.
        Types of property 'validator' are incompatible.
          Type 'ValidatorFn' is not assignable to type 'ValidatorFn'.
            Types of parameters 'c' and 'c' are incompatible.
              Type 'AbstractControl' is not assignable to type 'AbstractControl'.
                Types of property 'validator' are incompatible.
                  Type 'ValidatorFn' is not assignable to type 'ValidatorFn'. 
</code></pre>