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 5、typeScript中的接口 43 44 5.1 屬性類接口 45 5.2 函數類型接口 46 5.3 可索引接口 47 5.4 類類型接口 48 5.5 接口擴展 49 50 51 */ 52 53 54 /* 55 接口的作用:在面向對象的編程中,接口是一種規范的定義,它定義了行為和動作的規范,在程序設計里面,接口起到一種限制和規范的作用。接口定義了某一批類所需要遵守的規范,接口不關心這些類的內部狀態數據,也不關心這些類里方法的實現細節,它只規定這批類里必須提供某些方法,提供這些方法的類就可以滿足實際需要。 typescrip中的接口類似於java,同時還增加了更靈活的接口類型,包括屬性、函數、可索引和類等。 56 57 定義標准。 58 59 */ 60 61 62 // 1、屬性接口 對json的約束 63 64 65 66 //ts中定義方法 67 /* 68 function printLabel():void { 69 console.log('printLabel'); 70 } 71 printLabel(); 72 */ 73 74 75 /* 76 ts中定義方法傳入參數 77 78 function printLabel(label:string):void { 79 console.log('printLabel'); 80 } 81 82 printLabel('hahah'); 83 84 */ 85 86 87 88 /* 89 ts中自定義方法傳入參數,對json進行約束 90 91 */ 92 93 /* 94 95 function printLabel(labelInfo:{label:string}):void { 96 console.log('printLabel'); 97 } 98 99 printLabel('hahah'); //錯誤寫法 100 101 102 printLabel({name:'張三'}); //錯誤的寫法 103 104 105 printLabel({label:'張三'}); //正確的寫法 106 */ 107 108 109 110 //對批量方法傳入參數進行約束。 111 112 113 //接口:行為和動作的規范,對批量方法進行約束 114 115 116 117 //就是傳入對象的約束 屬性接口 118 // interface FullName{ 119 120 // firstName:string; //注意;結束 121 // secondName:string; 122 123 // } 124 125 // function printName(name:FullName){ 126 127 // // 必須傳入對象 firstName secondName 128 // console.log(name.firstName+'--'+name.secondName); 129 // } 130 // // printName('1213'); //錯誤 131 132 // var obj={ /*傳入的參數必須包含 firstName secondName*/ 133 // age:20, 134 // firstName:'張', 135 // secondName:'三' 136 // }; 137 // printName(obj) 138 139 140 141 142 143 144 145 // 接口:行為和動作的規范,對批量方法進行約束 146 147 148 149 // interface FullName{ 150 // firstName:string; //注意;結束 151 // secondName:string; 152 // } 153 154 // function printName(name:FullName){ 155 // // 必須傳入對象 firstName secondName 156 // console.log(name.firstName+'--'+name.secondName); 157 // } 158 159 160 161 // function printInfo(info:FullName){ 162 163 // // 必須傳入對象 firstName secondName 164 // console.log(info.firstName+info.secondName); 165 // } 166 167 // var obj={ /*傳入的參數必須包含 firstName secondName*/ 168 // age:20, 169 // firstName:'張', 170 // secondName:'三' 171 // }; 172 // printName(obj); 173 174 175 // printInfo({ 176 // firstName:'李', 177 // secondName:'四' 178 // }) 179 180 181 182 183 184 //接口 :可選屬性 185 186 187 188 189 // interface FullName{ 190 191 // firstName:string; 192 // secondName:string; 193 // } 194 195 // function getName(name:FullName){ 196 197 // console.log(name) 198 // } 199 // //參數的順序可以不一樣 200 // getName({ 201 // secondName:'secondName', 202 // firstName:'firstName' 203 // }) 204 205 206 207 208 209 210 211 // interface FullName{ 212 // firstName:string; 213 // secondName?:string; 214 // } 215 216 // function getName(name:FullName){ 217 218 // console.log(name) 219 // } 220 // getName({ 221 // firstName:'firstName' 222 // }) 223 224 225 226 227 228 229 230 /* 231 $.ajax({ 232 type: "GET", 233 url: "test.json", 234 data: {username:$("#username").val(), content:$("#content").val()}, 235 dataType: "json" 236 }); 237 238 */ 239 240 241 interface Config{ 242 type:string; 243 url:string; 244 data?:string; 245 dataType:string; 246 } 247 248 //原生js封裝的ajax 249 function ajax(config:Config){ 250 251 var xhr=new XMLHttpRequest(); 252 253 xhr.open(config.type,config.url,true); 254 255 xhr.send(config.data); 256 257 xhr.onreadystatechange=function(){ 258 259 if(xhr.readyState==4 && xhr.status==200){ 260 console.log('chengong'); 261 262 263 if(config.dataType=='json'){ 264 265 console.log(JSON.parse(xhr.responseText)); 266 }else{ 267 console.log(xhr.responseText) 268 269 } 270 271 272 } 273 } 274 } 275 276 277 ajax({ 278 type:'get', 279 data:'name=zhangsan', 280 url:'http://a.itying.com/api/productlist', //api 281 dataType:'json' 282 })