title: [Vue warn]: Invalid prop: type check failed for prop "X". Expected , got String
body: <p>Given this Vue 2 component:</p>
  
  <pre><code>  Vue.component('read-more', {
      props: {
        'text': String,
        'clamp': {
          type: String,
          default: 'Read More'
        },
        'less': {
          type: String,
          default: 'Read Less'
        },
        'length': {
          type: Number,
          default: 100
        }
      },
      template: `
      &lt;p&gt;
        &lt;span v-if="!show"&gt;{{truncate(text)}} &lt;a href="javascript:;" v-if="text.length &gt;= length" @click="toggle()"&gt;{{clamp}}&lt;/a&gt;&lt;/span&gt;
        &lt;span v-if="show"&gt;{{text}} &lt;a href="javascript:;" @click="toggle()" v-if="text.length &gt;= length"&gt;{{less}}&lt;/a&gt;&lt;/span&gt;
      &lt;/p&gt;
      `,
      methods: {
        truncate(string) {
          if (string) {
            return string.toString().substring(0, this.length);
          }
  
          return '';
        },
        toggle() {
          this.show = !this.show;
        },
      },
      data() {
        return {
          show: false,
          counter: this.length,
        };
      },
    });
  </code></pre>
  
  <p>Usage (HAML):</p>
  
  <pre><code>%read-more{v: {bind: '{text: some_object.property}' }}
  </code></pre>
  
  <p>Everything works fine but I get Vue warnings for all the declared props:</p>
  
  <pre><code>[Vue warn]: Invalid prop: type check failed for prop "text". Expected , got String.
  
  [Vue warn]: Invalid prop: type check failed for prop "clamp". Expected , got String.
  
  [Vue warn]: Invalid prop: type check failed for prop "less". Expected , got String.
  
  [Vue warn]: Invalid prop: type check failed for prop "length". Expected , got Number.
  </code></pre>
  
  <p>What am I doing wrong?</p>
  
  <p>EDIT</p>
  
  <p>I've created a fiddle which works just fine: <a href="http://jsfiddle.net/oLt9wkxe/8/" rel="noreferrer">http://jsfiddle.net/oLt9wkxe/8/</a></p>
  
  <p>In my app though, this component is nested within a few other components. It works perfectly fine but shows these warnings which are annoying! </p>