<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      typescript 入門介紹

      開始階段 推薦使用 線上[Playground]https://www.typescriptlang.org/play

      基礎數據類型

      1. 布爾值
      let isDone:boolean = false
      let hasDone: boolean = Boolean(1)
      
      1. 數值型
      let age: number = 23
      
      1. 字符串
      let name: string = 'zhansan'
      
      1. null 和 undefined
      let u: null = null
      let un: undefined = undefined
      

      默認情況下,unll 和 undefined 是所有類的子類, 也就是他可以賦值給其他的類型
      例如

      let num: number = undefined
      

      如果在 tsconfig 中指定了 strictNullCheck 標記,null 和 undefined 只能賦值給 void 和各自的類型
      5. any 類型
      any 類型可以被賦值為任何類型的值,
      可以訪問任何屬性
      申明變量的時候沒有指定類型,會給一個 any 類型
      6. unknown
      unknown 是 any 類型對應的安全類型
      所有類型也都可以賦值給 unknown 類型
      unknown只能賦值給 any 類型和 unknown 類型本身

      在使用unknown 的時候, 我們需要 對他進行 type guard

      function foo (x: unknown) {
        if (typeof x == 'string') {
          .....
        }
        if (typeof x == 'number') {
          .....
        }
      }
      
      1. void 表示沒有任何類型
        通常用在 方法中 表示沒有返回值
      function alertName (): void {
        alert('name')
      }
      
      1. never 表示的是永不存在的類型
        比如 拋出錯誤, 后面就不會執行了
      function error (message: string): never {
        throw new Error(message)
      }
      
      1. 數組
        定義的寫法
      let array: number[] = [1,2,3,4,5]
      let array1: Array<number> = [1,2,3,4,5]
      
      1. 元組 和數組相比
        它的長度是有限的,
        各個位置上類型是確定的,而且可以不同
      let tom: [string, number] = ['tom', 25]
      

      對類型和長度都有限定

      1. 枚舉
        取值限定在一定范圍內的類型
      enum Direction {
        NORTH,
        SOUTH,
        EAST,
        WEST
      }
      let dir: Direction = Direction.WEST
      

      默認情況下初始值是 0 ,其余的會自增長 加 1
      也可以指定枚舉值

      enum Direction {
        NORTH = 'NORTH',
        SOUTH = 'SOUTH',
        EAST = 'EAST',
        WEST = 'WEST'
      }
      
      1. 接口類型 interface 比較重要的一個類型
        定義一個對象的內容格式
      interface Person {
        name: string,
        age: number
      }
      let zhansan: Person = {
        name: 'zhansan',
        age: 34
      }
      

      定義的變量屬性 不能多余或者少于 interface 定義的 個數

      let zhansan: Person = {
        name: 'zhansan',
        age: 34,
        gender: 'male'
      }
      

      多了一個 gender 屬性, 但是在 Person 類中沒有定義, 會報錯
      定義類的時候,可以使用 添加 ? 來定義 一個屬性 可以出現, 也可以不出現

      interface Person {
        name: string,
        age?: number
      }
      

      上面定義的 age 屬性 添加 ? 后, 在這個類中 age 屬性 可以出現, 也可以不出現, 出現的時候 名字一定還是 age
      只讀屬性
      在屬性的前面 添加 readonly

      interface Person {
        readonly id: number,
        name: string,
        age?: number
      }
      
      1. 函數
      • 定義函數參數和返回值類型
      function add(x: number, y: number): number {
        return x + y
      }
      

      定義了一個函數, 有兩個參數,類型都是 number , 返回值是 number

      • 函數的參數中 定義可選參數 使用? 定義在必選參數的后面
      function add(x: number, y?: number): number {
        if (y) {
          return x + y
        } else {
          return x
        }
      }
      
      • 剩余參數
      function push (array: number[], ...items: number[]) {
        items.forEach(function (item) {
          array.push(item)
        })
      }
      let a = []
      push(a, 1,2,3,4)
      
      • 函數表達式
      let idGenerator: (charts: string, number: number) => string
      function createUserId (name: string, id: number): string {
        return name + id
      }
      
      IdGenerator = createUserId
      // 等效于 
      let idGenerator: (charts: string, number: number) => string = (name: string, id: number): string {
        return name + id
      }
      
      • 函數重載 允許函數接受不同數量或者類型的參數,做出不同的處理
      function add (a: number, b: number): number
      function add (a: string, b: string): string
      function add (a: string, b: number): string
      function add (a: number, b: string): string
      function add (a: string | number, b: string | number) {
        if (typeof a == 'string' || typeof b == 'string') {
          return a.toString() + b.toString()
        }
        return a + b
      }
      
      • 靜態屬性,靜態方法 static
        靜態屬性和方法是存在 類上面的, 不是在實例上的。
      class Animal {
        readonly name;
        public constructor (name) {
          this.name = name
        }
        static isAnimal (a) {
          return a.instanceof Animal
        }
      }
      let a = new Animal('tom')
      Animal.isAnimal(a) // true
      a.isAnimal(a) // error
      
      • public 定義的公共方法屬性
      • private 定義的屬性,只能在類中調用和訪問,子類中也不能訪問
      • protected 相對寬松些, 在子類中能夠調用
      class Animal {
        protected name;
        public constructor (name) {
          this.name = name
        }
      }
      class Cat extends Animal {
        constructor(name) {
          super(name)
          console.log(this.name)
        }
      }
      
      • readonly 是一個定義屬性 為只讀, 不能修改
      • 抽象類 abstract
        抽象類不能被實例化
        抽象類中的抽象方法,在必須在子類中實現
      abstract class Animal {
        public name;
        public abstract sayHi()
      }
      class Cat extends Animal {
        public sayHi() {
          console.log('99' + this.name)
        }
      }
      

      下一篇將繼續介紹 進階類型

      下面是我的小程序體驗碼,希望能和大家共同學習進步

      posted on 2022-11-22 10:12  不銹鋼子  閱讀(30)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 中文字幕无码免费不卡视频| 日本韩国一区二区精品| 欧洲亚洲成av人片天堂网| 一级毛片网| 无码国产精品一区二区免费式芒果| 午夜激情福利在线免费看| 久久国产精品精品国产色| 久久99久国产精品66| 日韩精品区一区二区三vr| 亚洲鸥美日韩精品久久| 伦伦影院精品一区| 亚洲欧洲精品一区二区| 97在线视频人妻无码| 国产又爽又黄的激情视频| 思思久99久女女精品| 亚洲香蕉伊综合在人在线| 久久天天躁狠狠躁夜夜躁| 东方av四虎在线观看| 久久99国产亚洲高清观看首页| 亚洲欧美人成人综合在线播放| 久久国内精品自在自线观看| 五月综合网亚洲乱妇久久| 亚洲美免无码中文字幕在线| 亚洲精品乱码免费精品乱| 无码精品人妻一区二区三区中| 樱花草视频www日本韩国| 国产一区二区三区黄色片| 加勒比无码专区中文字幕| 亚洲成人av在线高清| 国产精品黄大片在线播放| 久久青青草原精品国产app| 无码专区视频精品老司机| 国产成人精品亚洲一区二区 | 亚洲国产高清av网站| 99精品国产兔费观看久久99| 精品国产乱来一区二区三区| 国产美女久久久亚洲综合| 在线a亚洲v天堂网2018| 国产免费无遮挡吃奶视频| 日本新janpanese乱熟| 亚洲日本欧美日韩中文字幕|