Используя @проп декоратор для машинописного текста - составители выдает ошибку с просьбой инициировать проп


Я использую 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.джсон, но я хотел бы избежать этого, если возможный.

Спасибо!

1 3

1 ответ:

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

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