成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

TypeScript入門學(xué)習(xí)之路

jemygraw / 1481人閱讀

摘要:學(xué)習(xí)之路學(xué)習(xí)之路安裝環(huán)境起步開發(fā)工具自動(dòng)編譯文件中的數(shù)據(jù)類型中的函數(shù)中類的定義繼承中的繼承中的繼承類的靜態(tài)屬性和靜態(tài)方法類的多態(tài)的抽象類中的接口中的泛型學(xué)習(xí)之路安裝環(huán)境查看版本起步新建通過命令編譯此時(shí)路徑下

TypeScript學(xué)習(xí)之路

安裝typescript環(huán)境

npm install -g typescript

查看版本

tsc -v

typescript起步

1、新建hello.ts

const hello : string = "Hello World!"console.log(hello)

2、通過 tsc 命令編譯

tsc hello.ts 

3、此時(shí)路徑下會(huì)生成一個(gè)hello.js文件

var hello = "Hello World!";console.log(hello);

4、node hello.js打開或者引入xxx.html瀏覽器打開查看

typescript開發(fā)工具vscode自動(dòng)編譯.ts文件

1、創(chuàng)建 tsconfig.json 文件 cmd后執(zhí)行命令 tsc --init 生成配置文件




然后就可以自動(dòng)編譯.ts文件

typescript中的數(shù)據(jù)類型

// typescript中為了使編寫代碼更加規(guī)范 有利于維護(hù) 增加了類型校驗(yàn) /*  布爾類型 boolean  數(shù)字類型 number  字符串類型 string  數(shù)組類型 array  元祖類型 tuple  枚舉類型 enum  任意類型 any  null 和undefined  void類型  never類型*///  布爾類型 booleanvar flag: boolean = trueflag = false//  數(shù)字類型 numbervar num: number = 123console.log(num);//  字符串類型 stringlet str: string = "fqniu"console.log(str);//  數(shù)組類型 array// 第一種定義let arr1: number[] = [1, 2, 3, 4]console.log(arr1);let arr2: string[] = ["1", "2", "3", "4"]console.log(arr2);// 第二種定義let arr3: Array<number> = [1, 2, 3, 4]let arr4: Array<string> = ["1", "2", "3", "4"]// 第三種定義let arr5: any[] = [1, 2, "3", 4, true]//  元祖類型 tuple (定義數(shù)組的一種方式)let arr7: [string, number, boolean] = ["fqniu", 25, true]//  枚舉類型 enumenum Flag { success = 1, error = -1 }let fs: Flag = Flag.successlet fe: Flag = Flag.errorconsole.log(fs, fe); // 1 -1enum Color { red, blue, yellow }  // 如果這里默認(rèn)不賦值的話打印的是索引值 0 1 2let c: Color = Color.yellowconsole.log(c); // 2 enum Color1 { red, blue = 5, yellow }  // 如果這里默認(rèn)不賦值的話打印的是索引值 0 1 2let cr: Color1 = Color1.redlet cb: Color1 = Color1.bluelet cy: Color1 = Color1.yellowconsole.log(cr); // 0console.log(cb); // 5console.log(cy); // 6 取上一個(gè)值, blue的值 +1//  任意類型 any let numAny: any = 25numAny = "fqniu"numAny = trueconsole.log(numAny);// any的用處:獲取dom元素節(jié)點(diǎn) 操作dom的樣式等// var oBox: any = document.getElementById("box")// oBox.style.color = "red"//  null 和undefinedlet undef: undefinedconsole.log(undef);var nul: nullnul = nullconsole.log(nul);// 一個(gè)元素可能是 number類型 可能是null 可能是undefinedvar ele: number | null | undefinedconsole.log(ele);//  void類型 typescript 中的void表示沒有任何類型 一般用于定義方法的時(shí)候 方法沒有返回值function fun(): void {  console.log("fun");}fun()// 有返回值時(shí)function fun1(): number {  console.log("fun");  return 123}fun1()//  never類型:其他類型(包括null 和undefined)的子類型,代表從不會(huì)出現(xiàn)的值,這意味著聲明never的變量只能被never類型所賦值let error:never// error = 25 // 報(bào)錯(cuò)// 正確error = (() => {  throw new Error("錯(cuò)誤")})()

typescript中的函數(shù)

// 函數(shù)的定義// js中函數(shù)聲明定義function fun1() { }// js中匿名函數(shù)定義 函數(shù)表達(dá)式var fun2 = function () { }// ts中函數(shù)聲明定義function fun3(): string {  return "fqniu"}console.log(fun3()); // fqniu// ts中匿名函數(shù)定義 函數(shù)表達(dá)式var fun4 = function (): number {  return 25}console.log(fun4()); // 25// 1、函數(shù)的傳參function fun5(name: string, age: number): string {  return `${name} -- ${age}`}console.log(fun5("fqniu", 25)); // fqniu -- 25var fun6 = function (name: string, age: number): string {  return `${name} -- ${age}`}console.log(fun6("nfq", 22)); // nfq -- 22// 沒有返回值的方法function fun7(): void {  console.log("fun7");}fun7()// 2、函數(shù)的可選參數(shù)// es5里面的方法的實(shí)參和形參可以不一樣// 但是ts必須一致,不一樣的話可以配置可選參數(shù),注意參數(shù)必須配置到參數(shù)的最后一個(gè) 加?function fun8(name: string, age?: number): string {  if (age) {    return `${name} -- ${age}`  } else {    return `${name} -- 保密`  }}console.log(fun8("fqniu")); // fqniu -- 保密console.log(fun8("fqniu", 25)); // fqniu -- 25// 3、默認(rèn)參數(shù)// es5里面沒辦法設(shè)置默認(rèn)參數(shù),es6和ts可以設(shè)置默認(rèn)參數(shù)function fun9(name: string, age = 20): string {  if (age) {    return `${name} -- ${age}`  } else {    return `${name} -- 保密`  }}console.log(fun9("fqniu")); // fqniu -- 20console.log(fun9("fqniu", 25)); // fqniu -- 25// 4、剩余參數(shù)function sum1(a: number, b: number, c: number, d: number): number {  return a + b + c + d}console.log(sum1(1, 2, 3, 4)); // 10function sum2(...result: number[]): number {  var sum = 0  for (var i = 0; i < result.length; i++) {    sum += result[i]  }  return sum}console.log(sum2(1, 2, 3, 4, 5, 6)); // 21// 5、函數(shù)的重載// Java中方法的重載,是指的兩個(gè)或者多個(gè)同名函數(shù),但是他們的參數(shù)不一樣,這時(shí)會(huì)出現(xiàn)函數(shù)重載的情況// ts中的重載:通過為同一個(gè)函數(shù)提供多個(gè)函數(shù)類型定義來實(shí)現(xiàn)多種功能的目的function getInfo(name: string): string;function getInfo(age: number): string;function getInfo(str: any): any {  if (typeof str === "string") {    return "我叫 " + str  } else {    return "我的年齡是" + str  }}console.log(getInfo("fqniu"));console.log(getInfo(22));// 6、箭頭函數(shù)// this指向上下文setTimeout(() => {  console.log("fqniu ws");}, 2000);

typescript中類的定義

// ts中類的定義class Person {  name: string; //屬性 前面省略public關(guān)鍵詞  constructor(name: string) { // 構(gòu)造函數(shù) 實(shí)例化類的時(shí)候觸發(fā)的方法    this.name = name;  }  fun(): void {    console.log("fun", this.name);  }  getName(): string {    return this.name  }  setName(name: string): void {    this.name = name  }}var p = new Person("fqniu")console.log(p.name); // fqniuconsole.log(p.getName()); //fqniup.setName("niuniu")console.log(p.getName()); // niuniu

繼承

javascript中的繼承

  function Person() {    this.name = "fqniu" /*屬性*/    this.age = 25    this.fun = function () {      console.log(this.name + this.age);    }  }  var p = new Person()  console.log(p.name);  p.fun()  // 原型鏈上的屬性會(huì)被多個(gè)實(shí)例共享,但是構(gòu)造函數(shù)不會(huì)  Person.prototype.sex = "男"  Person.prototype.work = function () {    console.log(this.name + "敲代碼");  }  p.work()  // 添加靜態(tài)方法  Person.getInfo = function () {    console.log("我是靜態(tài)方法");  }  Person.getInfo()  // es中的繼承 繼承Person類   // 1、對(duì)象冒充實(shí)現(xiàn)繼承  function Web1() {    Person.call(this) //對(duì)象冒充實(shí)現(xiàn)繼承  }  var web1 = new Web1()  web1.fun() // 對(duì)象冒充實(shí)現(xiàn)繼承構(gòu)造函數(shù)中的屬性和方法  // web.work() // 報(bào)錯(cuò) index.html:48 Uncaught TypeError: web.work is not a function 但是沒辦法繼承原型鏈上的屬性和方法  // 2、原型鏈實(shí)現(xiàn)繼承  function Web2() { }  Web2.prototype = new Person() // 原型鏈實(shí)現(xiàn)繼承  var web2 = new Web2()  console.log(web2.name); // fqniu  web2.fun() // fqniu25  web2.work() // fqniu敲代碼  // 原型鏈實(shí)現(xiàn)繼承好處:既可以繼承構(gòu)造函數(shù)中的屬性和方法,也可以繼承原型鏈上的方法  // 原型鏈實(shí)現(xiàn)繼承的問題?  當(dāng)實(shí)例化子類的時(shí)候,沒辦法給父類傳參  function Person1(name, age) {    this.name = name /*屬性*/    this.age = age    this.fun = function () {      console.log(this.name + this.age);    }  }  function Web3(name, age) { }  Web3.prototype = new Person1() // 原型鏈實(shí)現(xiàn)繼承  var web3 = new Web3("nfq", 25)  console.log(web3.name); // undefined  因?yàn)閷?shí)例化子類的時(shí)候,沒辦法給父類傳參  // 組合繼承模式  function Person2(name, age) {    this.name = name /*屬性*/    this.age = age    this.fun = function () {      console.log(this.name + this.age);    }  }  Person2.prototype.sex = "男"  Person2.prototype.work = function () {    console.log(this.name + "敲代碼");  }  function Web4(name, age) {    Person2.call(this, name, age) // 對(duì)象冒充繼承,實(shí)例化子類可以給父類傳參  }  Web4.prototype = new Person2() // 原型鏈實(shí)現(xiàn)繼承  // 或者    // Web4.prototype = Person2.prototype  var web4 = new Web4("nfq", 25)  console.log(web4.name);  // nfq  web4.fun() // nfq25  web4.work() // nfq敲代碼

typescript中的繼承

// ts中實(shí)現(xiàn)繼承 extends、 superclass Person {  name: string; //屬性 前面省略public關(guān)鍵詞  constructor(name: string) { // 構(gòu)造函數(shù) 實(shí)例化類的時(shí)候觸發(fā)的方法    this.name = name;  }  fun(): void {    console.log("fun", this.name);  }  getName(): string {    return this.name  }  setName(name: string): void {    this.name = name  }}class Web extends Person {  constructor(name: string) {    super(name) // 初始化父類的構(gòu)造函數(shù)  }  work(): void {    console.log(`${this.name}在敲代碼`);  }  // fun(): void {  //   console.log("fun - 子類", this.name);  // }}var w = new Web("fqniu")w.fun() // fun fqniuw.work() // fqniu在敲代碼// 類里面的修飾符 typescript里面定義屬性的時(shí)候提供了三種修飾符/*  public:公有 —— 在當(dāng)前類里面、子類、類外面都可以訪問  protected:保護(hù)類型 —— 在當(dāng)前類里面,子類都可以訪問,在類外部無法訪問  provite:私有 —— 只有當(dāng)前類里面訪問,子類、類外部都無法訪問  屬性不加修飾           
               
                                           
                       
                 

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/124023.html

相關(guān)文章

  • 前端相關(guān)匯總

    摘要:簡(jiǎn)介前端發(fā)展迅速,開發(fā)者富有的創(chuàng)造力不斷的給前端生態(tài)注入新生命,各種庫框架工程化構(gòu)建工具層出不窮,眼花繚亂,不盲目追求前沿技術(shù),學(xué)習(xí)框架和庫在滿足自己開發(fā)需求的基礎(chǔ)上,然后最好可以對(duì)源碼進(jìn)行調(diào)研,了解和深入實(shí)現(xiàn)原理,從中可以獲得更多的收獲隨 showImg(https://segmentfault.com/img/remote/1460000016784101?w=936&h=397)...

    BenCHou 評(píng)論0 收藏0
  • 2017-07-01 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選騰訊前端團(tuán)隊(duì)社區(qū)源碼分析入門指南一些關(guān)于使用的心得基本類型與引用類型知多少掘金中文第期框架選型周刊第期入門系列模塊車棧重構(gòu)基于的網(wǎng)絡(luò)請(qǐng)求庫某熊的全棧之路的那些奇技淫巧的平凡之路模仿寫個(gè)數(shù)組監(jiān)聽掘 2017-07-01 前端日?qǐng)?bào) 精選 Why you shouldn`t use Preact, Fast-React, etc. to replace React today -...

    _DangJin 評(píng)論0 收藏0
  • 2017-07-06 前端日?qǐng)?bào)

    摘要:前端日?qǐng)?bào)精選專題之類型判斷下百度生態(tài)構(gòu)建發(fā)布基于的解決方案將全面支持從綁定,看語言發(fā)展和框架設(shè)計(jì)掘金譯機(jī)器學(xué)習(xí)與一付費(fèi)問答上線,向你心目中的大牛提問吧產(chǎn)品技術(shù)日志中文第期團(tuán)隊(duì)技術(shù)信息流建設(shè)翻譯基于路由的異步組件加載個(gè)必備的裝逼 2017-07-06 前端日?qǐng)?bào) 精選 JavaScript專題之類型判斷(下) · Issue #30 · mqyqingfeng/Blog 百度Web生態(tài)構(gòu)...

    shiguibiao 評(píng)論0 收藏0
  • Angular學(xué)習(xí)資料

    摘要:目前穩(wěn)定在,進(jìn)入了版本狀態(tài),谷歌表示會(huì)長期進(jìn)行支持。版本是谷歌開發(fā)的一款類型的框架,具有優(yōu)越的性能和絕佳的跨平臺(tái)性。于年月正式發(fā)布,目前已發(fā)布到版本。中文翻譯與主站同步的非常及時(shí)。 Angular是一款面向企業(yè)級(jí)應(yīng)用開發(fā)的前端框架,掌握好Angular相關(guān)技術(shù),有助于我們提升開發(fā)效率,編寫高質(zhì)量的前端代碼。 Angular 1.x版本 AngularJS 誕生于2009年,由Misko H...

    james 評(píng)論0 收藏0
  • 平時(shí)積累的前端資源,持續(xù)更新中。。。

    本文收集學(xué)習(xí)過程中使用到的資源。 持續(xù)更新中…… 項(xiàng)目地址 https://github.com/abc-club/f... 目錄 vue react react-native Weex typescript Taro nodejs 常用庫 css js es6 移動(dòng)端 微信公眾號(hào) 小程序 webpack GraphQL 性能與監(jiān)控 高質(zhì)文章 趨勢(shì) 動(dòng)效 數(shù)據(jù)結(jié)構(gòu)與算法 js core 代碼規(guī)范...

    acrazing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<