对TypeScript使用@Prop修饰符 - 编译器给出了初始化prop的错误

问题描述 投票:3回答:1

我正在使用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"

那么在这种情况下我应该怎么做才没有任何错误或警告?

我唯一能想到的是在tsconfig.json中设置:"strictPropertyInitialization": false,但如果可能的话,我想避免这种情况。

谢谢!

typescript vue.js vuejs2 vue-component tslint
1个回答
2
投票

初始错误消息是TypeScript的严格类初始化(在2.7中引入)的结果。 2.7的发行说明描述了使用definite assignment operator!)来解决这个问题。在你的情况下,你这样做:

@Prop({ default: '' }) private type!: string
© www.soinside.com 2019 - 2024. All rights reserved.