I am using props in Vue Class components. The props are defined in the constructor without a value. This compiles and works fine, but since the latest VS Code / TSLint update, I get the following warning:
Property 'tag' has no initializer and is not definitely assigned in the constructor.
Vue Class Component
export default class Browser extends Vue {
@Prop({default: '', required:false})
tag: string
created(){
console.log("the tag prop is " + this.tag)
}
}
If I DO assign it, I get the Vue warning that you shouldn't manipulate a Prop in a child component.
[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders
Since this seems primarily a linting problem, is there a way to disable this? Or is my code actually wrong?
Update 2020/06/15
My original answer I gave at the time was a intermittent solution and not the correct one. This answer is the correct way of doing this; Appending the prop name with a
!
.Original Answer
I had the same issue. I fixed it by adding
"strictPropertyInitialization": false,
to tsconfig.json's compilerOptions.You don't need set
strictPropertyInitialization": false
to solve this.According to this link in Microsoft TypeScript-Vue-Starter repo:
You just need to append the
!
to the prop name: