!: 表示一定存在,?:表示可能不存在 这两种在语法上叫赋值断言

    1. /* : 可以在任何需要的场合使用 */
    2. var a:number;
    3. // 不可以申明变量的时候使用
    4. var a!:number;
    5. var a?:number;
    6. // ?: 不可以字面量赋值时使用
    7. var a = { name?:"Pluto" }

    关于赋值断言:通常会在class中看见他们的身影

    1. class a {
    2. sad!: string;
    3. // 肯定断言不能赋初值
    4. sad!: string = 'so sad';
    5. // 但是否定断言,就可以
    6. age?: number = 2;
    7. bg = { age!: 16 }
    8. }

    在Vue中最常见的肯定断言就是prop还有store引入了,因为我们确信他们已经存在了

    1. @Component
    2. export default class MyComponent extends Vue {
    3. @Prop({ default : "" }) myName !: string;
    4. @State mystate !: boolean;
    5. }

    在Vue中最常见的否定断言就是函数传参和类型定义

    1. interface A {
    2. name:string
    3. /* 赋值时,age不是必选项,因此可以不使用 */
    4. age?:number
    5. }
    6. var a:A = {
    7. name:"16"
    8. }
    9. function getSome(some?:string){
    10. /* 通常函数我们使用 给函数参数赋初始值的形式而不是用这种形式 */
    11. return some||""
    12. }
    13. function getSome(some:string=""){
    14. return some
    15. }