Использование декоратора @Prop для TypeScript - компиляторы выдают ошибку, запрашивающую инициализацию проп - PullRequest
0 голосов
/ 19 мая 2018

Я использую Vue с TypeScript и пакетом vue-property-decorator.

Когда я использую проп, вот так:

@Prop({ default: '' }) private type: string

Я получаю ошибку компилятора TS: Property 'type' has no initializer and is not definitely assigned in the constructor.

Но тогда, если я инициализирую его чем-то вроде:

@Prop({ default: '' }) private type: string = ''

Тогда я получаю предупреждение в консоли браузера:

vue.runtime.esm.js?ff9b:587 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten 
whenever the parent component re-renders. Instead, use a data or computed property based on the prop's 
value. Prop being mutated: "type"

Так что мне делать в этомсценарий, чтобы не было ошибок или предупреждений?

Единственное, о чем я могу думать, это установить: "strictPropertyInitialization": false в tsconfig.json, но я бы хотел избежать этого, если это возможно.

Спасибо!

1 Ответ

0 голосов
/ 20 мая 2018

Исходное сообщение об ошибке является результатом Строгой Инициализации Класса (введено в 2.7).В примечаниях к выпуску 2.7 описывается использование оператора определенного присваивания (!) для решения этой проблемы.В вашем случае вы бы сделали это:

@Prop({ default: '' }) private type!: string
...