1 /* 2 1、vscode配置自動編譯 3 4 1.第一步 tsc --inti 生成tsconfig.json 改 "outDir": "./js", 5 6 7 2、第二步 任務 - 運行任務 監視tsconfig.json 8 9 10 2、typeScript中的數據類型 11 12 typescript中為了使編寫的代碼更規范,更有利於維護,增加了類型校驗,在typescript中主要給我們提供了以下數據類型 13 14 15 布爾類型(boolean) 16 數字類型(number) 17 字符串類型(string) 18 數組類型(array) 19 元組類型(tuple) 20 枚舉類型(enum) 21 22 任意類型(any) 23 null 和 undefined 24 void類型 25 never類型 26 27 3、typeScript中的函數 28 29 3.1、函數的定義 30 3.2、可選參數 31 3.3、默認參數 32 3.4、剩余參數 33 3.5、函數重載 34 3.6、箭頭函數 es6 35 4、typeScript中的類 36 37 4.1 類的定義 38 4.2 繼承 39 4.3 類里面的修飾符 40 4.4 靜態屬性 靜態方法 41 4.5 抽象類 繼承 多態 42 43 44 */ 45 46 47 //1、ts中類的定義 48 49 /* 50 es5: 51 52 function Person(name){ 53 54 this.name=name; 55 56 this.run=function(){ 57 58 console.log(this.name) 59 } 60 } 61 62 var p=new Person('張三'); 63 64 p.run() 65 */ 66 67 68 /* 69 ts中定義類: 70 71 72 class Person{ 73 74 name:string; //屬性 前面省略了public關鍵詞 75 76 constructor(n:string){ //構造函數 實例化類的時候觸發的方法 77 this.name=n; 78 } 79 80 run():void{ 81 82 alert(this.name); 83 } 84 85 } 86 var p=new Person('張三'); 87 88 p.run() 89 90 */ 91 92 93 94 /* 95 class Person{ 96 97 name:string; 98 99 constructor(name:string){ //構造函數 實例化類的時候觸發的方法 100 this.name=name; 101 } 102 103 getName():string{ 104 105 return this.name; 106 } 107 setName(name:string):void{ 108 109 this.name=name; 110 } 111 } 112 var p=new Person('張三'); 113 114 alert(p.getName()); 115 116 117 p.setName('李四'); 118 119 120 alert(p.getName()); 121 122 */ 123 124 125 126 127 128 //2、ts中實現繼承 extends、 super 129 130 131 // class Person{ 132 133 // name:string; 134 135 // constructor(name:string){ 136 // this.name=name; 137 // } 138 139 // run():string{ 140 141 // return `${this.name}在運動` 142 // } 143 // } 144 // // var p=new Person('王五'); 145 // // alert(p.run()) 146 147 148 // class Web extends Person{ 149 // constructor(name:string){ 150 151 // super(name); /*初始化父類的構造函數*/ 152 // } 153 // } 154 155 156 // var w=new Web('李四'); 157 // alert(w.run()); 158 159 160 161 162 163 164 //ts中繼承的探討 父類的方法和子類的方法一致 165 166 // class Person{ 167 168 // name:string; 169 170 // constructor(name:string){ 171 // this.name=name; 172 // } 173 174 // run():string{ 175 176 // return `${this.name}在運動` 177 // } 178 // } 179 // // var p=new Person('王五'); 180 // // alert(p.run()) 181 182 183 // class Web extends Person{ 184 // constructor(name:string){ 185 186 // super(name); /*初始化父類的構造函數*/ 187 // } 188 // run():string{ 189 190 // return `${this.name}在運動-子類` 191 // } 192 // work(){ 193 194 // alert(`${this.name}在工作`) 195 // } 196 // } 197 198 199 // var w=new Web('李四'); 200 // // alert(w.run()); 201 202 // // w.work(); 203 204 // alert(w.run()); 205 206 207 208 209 210 211 212 213 214 // 3 類里面的修飾符 typescript里面定義屬性的時候給我們提供了 三種修飾符 215 216 /* 217 public :公有 在當前類里面、 子類 、類外面都可以訪問 218 protected:保護類型 在當前類里面、子類里面可以訪問 ,在類外部沒法訪問 219 private :私有 在當前類里面可以訪問,子類、類外部都沒法訪問 220 221 屬性如果不加修飾符 默認就是 公有 (public) 222 223 */ 224 225 226 227 //public :公有 在類里面、 子類 、類外面都可以訪問 228 229 230 // class Person{ 231 232 // public name:string; /*公有屬性*/ 233 234 // constructor(name:string){ 235 // this.name=name; 236 // } 237 238 // run():string{ 239 240 // return `${this.name}在運動` 241 // } 242 // } 243 // // var p=new Person('王五'); 244 // // alert(p.run()) 245 246 247 // class Web extends Person{ 248 // constructor(name:string){ 249 250 // super(name); /*初始化父類的構造函數*/ 251 // } 252 // run():string{ 253 254 // return `${this.name}在運動-子類` 255 // } 256 // work(){ 257 258 // alert(`${this.name}在工作`) 259 // } 260 // } 261 262 // var w=new Web('李四'); 263 264 // w.work(); 265 266 267 //類外部訪問公有屬性 268 269 270 // class Person{ 271 272 // public name:string; /*公有屬性*/ 273 274 // constructor(name:string){ 275 // this.name=name; 276 // } 277 278 // run():string{ 279 280 // return `${this.name}在運動` 281 // } 282 // } 283 284 // var p=new Person('哈哈哈'); 285 286 // alert(p.name); 287 288 289 290 291 292 //protected:保護類型 在類里面、子類里面可以訪問 ,在類外部沒法訪問 293 294 295 // class Person{ 296 297 // protected name:string; /*公有屬性*/ 298 299 // constructor(name:string){ 300 // this.name=name; 301 // } 302 303 // run():string{ 304 305 // return `${this.name}在運動` 306 // } 307 // } 308 // var p=new Person('王五'); 309 // alert(p.run()) 310 311 312 // class Web extends Person{ 313 // constructor(name:string){ 314 315 // super(name); /*初始化父類的構造函數*/ 316 // } 317 // work(){ 318 319 // alert(`${this.name}在工作`) 320 // } 321 // } 322 323 // var w=new Web('李四11'); 324 325 // w.work(); 326 327 // alert( w.run()); 328 329 330 331 //類外外部沒法訪問保護類型的屬性 332 333 334 // class Person{ 335 336 // protected name:string; /*保護類型*/ 337 338 // constructor(name:string){ 339 // this.name=name; 340 // } 341 342 // run():string{ 343 344 // return `${this.name}在運動` 345 // } 346 // } 347 348 // var p=new Person('哈哈哈'); 349 350 // alert(p.name); 351 352 353 354 355 356 // private :私有 在類里面可以訪問,子類、類外部都沒法訪問 357 358 359 // class Person{ 360 361 // private name:string; /*私有*/ 362 363 // constructor(name:string){ 364 // this.name=name; 365 // } 366 367 // run():string{ 368 369 // return `${this.name}在運動` 370 // } 371 // } 372 373 374 // class Web extends Person{ 375 376 // constructor(name:string){ 377 // super(name) 378 // } 379 380 // work(){ 381 382 // console.log(`${this.name}在工作`) 383 // } 384 // } 385 386 387 388 class Person{ 389 390 private name:string; /*私有*/ 391 392 constructor(name:string){ 393 this.name=name; 394 } 395 396 run():string{ 397 398 return `${this.name}在運動` 399 } 400 } 401 402 var p=new Person('哈哈哈'); 403 404 alert(p.run());