!: 表示一定存在,?:表示可能不存在 这两种在语法上叫赋值断言
/* : 可以在任何需要的场合使用 */var a:number;// 不可以申明变量的时候使用var a!:number;var a?:number;// ?: 不可以字面量赋值时使用var a = { name?:"Pluto" }
关于赋值断言:通常会在class中看见他们的身影
class a {sad!: string;// 肯定断言不能赋初值sad!: string = 'so sad';// 但是否定断言,就可以age?: number = 2;bg = { age!: 16 }}
在Vue中最常见的肯定断言就是prop还有store引入了,因为我们确信他们已经存在了
@Componentexport default class MyComponent extends Vue {@Prop({ default : "" }) myName !: string;@State mystate !: boolean;}
在Vue中最常见的否定断言就是函数传参和类型定义
interface A {name:string/* 赋值时,age不是必选项,因此可以不使用 */age?:number}var a:A = {name:"16"}function getSome(some?:string){/* 通常函数我们使用 给函数参数赋初始值的形式而不是用这种形式 */return some||""}function getSome(some:string=""){return some}
