typescript接口的概念 以及屬性類型接口


  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 })

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM