zoukankan      html  css  js  c++  java
  • [Typescript] Make TypeScript Class Usage Safer with Strict Property Initialization

    By setting the strictPropertyInitialization flag in the .tsconfig file, TypeScript will start throwing errors unless we initialize all properties of classes on construction. We’ll explore how you can fix the errors by assigning to them directly or in the constructor body. And if you can’t initialize directly but you’re sure it will be assigned to at runtime by a dependency injection library, you can use the definite assignment assertion operator to ask TypeScript to ignore that property.

    For example, code belkow, 'title' is undefined. WIll cause the problem when we call '.filter'.

    class Library {
      titles: string[];
    
      constructor() {}
    }
    const library = new Library();
    
    // sometime later & elsewhere in our codebase..
    
    const shortTitles = library.titles.filter(
      title => title.length < 5
    );

    First we want our IDE to help us to detect the problem even before compiling...

    tsconfig.json:

    {
      "compilerOptions": {
        "strictPropertyInitialization": true,
        "strictNullChecks": true
      }
    }

    After setting up 'strictPropertyInitialization' & 'strictNullChecks', IDE will tell us that 'title' is undefined.

    In the code, we can also utitlize: 

    'use strict'
    

    or add some if checking.

    Using definite assignment operator from Typescript:

    class Library {
      titles!: string[]
    
      constructor() {}
    }

    '!' tell typescript, this object is not undefine or null, we will assign the value later, so in this case, IDE won't complain:

    class Library {
      titles!: string[]
    
      constructor() {
    
         this.titles = []
      }
    }
  • 相关阅读:
    lucas定理计算组合数
    西电校赛网络赛J题 lucas定理计算组合数
    bestcoder#37_1001 字符串,贪心
    codeforces#297div2_d bfs,2*2法判断矩阵里的矩形
    codeforces#297div2_c 贪心
    codeforces#297div2_b 贪心,字符串,哈希
    poj2983——差分约束,bellman_ford
    poj1201——差分约束,spfa
    图的邻接表存储
    hiho1093 ——spfa
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10268562.html
Copyright © 2011-2022 走看看