Kok*_*oko 1 typescript vue.js tslint visual-studio-code
我在Vue类组件中使用道具。道具是在构造函数中定义的,没有值。这可以编译并正常工作,但是由于最新的VS Code / TSLint更新,我收到以下警告:
属性“标签”没有初始化程序,并且在构造函数中未明确分配。
Vue类组件
export default class Browser extends Vue {
@Prop({default: '', required:false})
tag: string
created(){
console.log("the tag prop is " + this.tag)
}
}
Run Code Online (Sandbox Code Playgroud)
如果我确实分配它,则会收到Vue警告,提示您不应在子组件中操纵Prop。
[Vue警告]:避免直接更改prop,因为每当父组件重新渲染时,该值都会被覆盖
由于这似乎主要是棉绒问题,有没有办法禁用它?还是我的代码实际上是错误的?
小智 9
你不会需要设置strictPropertyInitialization": false来解决这个问题。
根据Microsoft TypeScript-Vue-Starter存储库中的此链接:
通过在vue-property-decorator包中为实例变量添加@Prop()装饰器前缀来定义属性。因为--strictPropertyInitialization选项处于启用状态,所以我们需要告诉TypeScript Vue将通过附加!来初始化我们的属性。给他们。这告诉TypeScript“嘿,放松点,其他人将为这个属性分配一个值。”
您只需要!在prop名称后面添加:
@Prop({default: '', required:false})
tag!: string
Run Code Online (Sandbox Code Playgroud)
我遇到过同样的问题。我通过添加"strictPropertyInitialization": false,到tsconfig.json的CompilerOptions中修复了它。
{
"compilerOptions": {
"outDir": "./built/",
"sourceMap": true,
"strict": true,
"noImplicitReturns": true,
"experimentalDecorators": true,
"module": "es2015",
"moduleResolution": "node",
"target": "es5",
"strictPropertyInitialization": false,
"lib": [
"es5",
"es2015",
"dom",
"ScriptHost"
]
},
"include": [
"./src/**/*"
]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1412 次 |
| 最近记录: |