Bootstrap-vue не компилируется: несколько «Тип X не может быть назначен типу Y» - PullRequest
1 голос
/ 11 апреля 2019

В настоящее время я пытаюсь решить проблему, с которой сталкиваюсь bootstrap-vue.Точнее, кажется, что во время сборки моего кода есть проблема с самой bootstrap-vue: однако я довольно новичок в Typescript / Vue, и поэтому я не совсем уверен в этом сам.

Когда я пытался скомпилировать свой код, я включил следующее сообщение:

ERROR in [MY PROJECT PATH]/node_modules/bootstrap-vue/src/index.d.ts
149:20 Interface 'Table' incorrectly extends interface 'Vue'.
  Types of property 'fields' are incompatible.
    Type 'TableFieldObject | (string | ({ key: string; } & TableField))[]'
is not assignable to type 'FieldFlagsBag'.
      Type 'TableFieldObject' is not assignable to type 'FieldFlagsBag'.
        Index signatures are incompatible.
          Type 'TableField' is not assignable to type 'FieldFlags'.
            Property 'untouched' is missing in type 'TableField'.
    147 |   }
    148 |   export interface Progress extends Vue {}
  > 149 |   export interface Table extends Vue {
        |                    ^
    150 |     refresh: () => void
    151 |     fields?: TableFieldObject | TableFieldArray
    152 |   }

Я попытался выполнить поиск в Google, если о подобной проблеме уже сообщалось, но ничего не смог найти.

Я снова попытался удалить и установить bootstrap-vue, но ошибка все еще существует;Я попытался удалить и установить весь мой проект снова, но ошибка все еще существует;И я попытался вернуть свой код в состояние, в котором он был вчера (когда у меня не было этой ошибки), но снова проблема продолжала появляться.

Еще раз, я довольно новичок в Typescript и Vue.Мне кажется, что проблема не исходит от меня, но в том, что касается программирования, возможно, это где-то моя вина.Тем не менее, я не знаю, где и, следовательно, не знаю, какую часть кода показывать.

Может кто-нибудь помочь мне решить эту проблему, объяснив мне, почему это происходит / как предотвратить это вбудущее?

Большое спасибо!

1 Ответ

0 голосов
/ 17 апреля 2019

Я нашел решение из этого ответа: https://stackoverflow.com/a/50794250/3499604

В моем случае vee-validate добавляет свойство fields к Vue. Это не проблема, поскольку можно переконфигурировать vee-validate, чтобы использовать другое имя для такого свойства. Но набор текста по-прежнему противоречив.

Для переопределения vee-validate набрав:

создать <your_project>/src/node_modules/vee-validate и скопировать сюда файлы из <your_project>/node_modules/vee-validate/types,

... так что у вас будет <your_project>/src/node_modules/vee-validate/vue.d.ts, который вы сможете редактировать ...

в моем случае я просто переименовал fields => vFields (рассмотрите мой вариант fieldsBagName vee-validate).

...