成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

TypeScript--接口

zhongmeizhi / 1961人閱讀

摘要:接口接口的作用在面向?qū)ο蟮木幊讨?,接口是一種規(guī)范的定義,它定義了行為和動(dòng)作規(guī)范,在程序設(shè)計(jì)里面,接口起到了一種限制和規(guī)范的作用接口定義了某一批類所需要遵守的規(guī)范,接口不關(guān)心這些類的內(nèi)部狀態(tài)數(shù)據(jù),也不關(guān)心這些類里面方法的實(shí)現(xiàn)細(xì)節(jié),它只規(guī)定這批

接口

接口的作用:在面向?qū)ο蟮木幊讨校涌谑且环N規(guī)范的定義,它定義了行為和動(dòng)作規(guī)范,在程序設(shè)計(jì)里面,接口起到了一種限制和規(guī)范的作用

接口定義了某一批類所需要遵守的規(guī)范,接口不關(guān)心這些類的內(nèi)部狀態(tài)數(shù)據(jù),也不關(guān)心這些類里面方法的實(shí)現(xiàn)細(xì)節(jié),它只規(guī)定這批類里面必須提供某些方法,提供這些方法的類就可以滿足實(shí)際需要

typescript中的接口類似于java,同時(shí)還增加了更靈活的接口類型,包括屬性,函數(shù),可索引和類等

Typescript中的接口 標(biāo)準(zhǔn)寫法
//定義接口
interface FullName{
    firstName:string;
    secodeName:string;
}
//聲明方法,傳入的參數(shù)為接口中定義的類型
function printName(name:FullName){
    console.log(name.firstName + name.secodeName);
}
//調(diào)用方法,傳入定義好的接口,參數(shù)
printName({
    firstName:"aa",
    secodeName:"bb"
});

順序可調(diào)亂
interface FullName{
    firstName:string;
    secodeName:string;
}

function printName(name:FullName){
    console.log(name.firstName + name.secodeName);
}
printName({
    secodeName:"bbb",
    firstName:"aaa",
});

另一種正確寫法,傳入的參數(shù)可比定義的多
interface FullName{
    firstName:string;
    secodeName:string;
}

function printName(name:FullName){
    console.log(name.firstName + name.secodeName);
}
var obj = {
    age:20,
    firstName:"cc",
    secodeName:"dd"
}
printName(obj);

錯(cuò)誤寫法 數(shù)據(jù)類型不一致

數(shù)量不一致

可選參數(shù)?
interface FullName{
    firstName:string;
    secodeName?:string;
}

function printName(name:FullName){
    console.log(name);
}

printName({
    firstName:"aa"
})

printName({
    firstName:"aa",
    secodeName:"bb"
})

屬性類型接口(ajax)
interface Config{
    type:string;
    url:string;
    data?:string;
    dataType:string;
}

function ajax(config:Config) {
    var xhr = new XMLHttpRequest();
    xhr.open(config.type, config.url, true);
    xhr.send(config.data);
    xhr.onreadystatechange = function () {
        if (xhr.readyState == 4 && xhr.status == 200) {
            console.log("chengong");
            if (config.dataType == "json") {
                console.log(JSON.parse(xhr.responseText));
            }
            else {
                console.log(xhr.responseText);
            }
        }
    };
}

//可選參數(shù)data,不傳data
ajax({
    type: "get",
    url: "http://a.itying.com/api/productlist",
    dataType: "json"
});
//可選參數(shù)data,傳data
ajax({
    type: "get",
    data: "name=zhangsan",
    url: "http://a.itying.com/api/productlist",
    dataType: "json"
});

函數(shù)類型口

對(duì)方法傳入的參數(shù),以及返回值進(jìn)行約束
可能批量,對(duì)應(yīng)多個(gè)方法

interface encrypt{
    (key:string,value:string):string;
}

var md5:encrypt = function(key:string,value:string):string{
    return key+value;
}

console.log(md5("name","lisi"));

var sha1:encrypt = function(key:string,value:string):string{
    return key+"---"+ value;
}
console.log(sha1("name","wanwu"));

可索引接口 數(shù)組 正確
interface UserArr{
    [index:number]:string
}

var arr:UserArr=["123","456"];
console.log(arr[0]);

錯(cuò)誤
interface UserArr{
    [index:number]:string
}
var arr:UserArr=[123,"bbb"];
console.log(arr[0]);

對(duì)象
interface UserObj{
    [index:string]:string;
}

var arr:UserObj= {name:"list"};
console.log(arr.name)

類類型接口

對(duì)類的約束

和抽象類抽象有點(diǎn)相似,比抽象類更強(qiáng)大

implements為類實(shí)現(xiàn)接口

接口中的屬性和方法都要有

正確
interface Animall{
    name:string;
    eat(str:string):void;
}

class Dogg implements Animall{
    name:string;
    constructor(name:string){
        this.name = name;
    }
    eat(){
        console.log(this.name+"吃糧食")
    }
}

var dd = new Dogg("小黑");
dd.eat();


class Catt implements Animall{
    name:string;
    constructor(name:string){
        this.name = name;
    }
    eat(food:string){
        console.log(this.name + "吃" + food);
    }
}

var cc = new Catt("小花貓");
cc.eat("老鼠");

錯(cuò)誤

類中沒(méi)有對(duì)應(yīng)的方法

interface Animall{
    name:string;
    eat(str:string):void;
}

class Dogg implements Animall{
    name:string;
    constructor(name:string){
        this.name = name;
    }
}

var dd = new Dogg("小黑");
dd.eat();

接口拓展:接口可以繼承接口 一個(gè)類實(shí)現(xiàn)二個(gè)接口
// 動(dòng)物接口
interface Animalll{
    eat():void;
}
//人接口,人屬性動(dòng)物
interface Person extends Animalll{
    work():void;
}
//前端類
class Web implements Person{
    public name:string;
    constructor(name:string){
        this.name = name;
    }
    eat(){
        console.log(this.name +"吃米粉");
    }
    work(){
        console.log(this.name + "寫js");
    }
}

var w = new Web("小李");
w.eat()
w.work()

一個(gè)類繼承父類,并實(shí)現(xiàn)2個(gè)接口(一個(gè)接口繼承另一個(gè)接口)
// 動(dòng)物接口
interface Animalll{
    eat():void;
}
//人接口,人屬性動(dòng)物
interface Person extends Animalll{
    work():void;
}
//程序員類
class Programmer{
    public name:string;
    constructor(name:string){
        this.name = name;
    }
    conding(code:string){
        console.log(this.name + code);
    }
}
//前端類
class Web extends Programmer implements Person{

    constructor(name:string){
        super(name)
    }
    eat(){
        console.log(this.name +"吃米粉");
    }
    work(){
        console.log(this.name + "寫js");
    }
}

var w = new Web("小李");
w.eat()
w.work()
w.conding("寫代碼")

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/101697.html

相關(guān)文章

  • 從 JavaScript 到 TypeScript - 接口

    摘要:前面講泛型的時(shí)候,提到了接口。和泛型一樣,接口也是目前中并不存在的語(yǔ)法。不過(guò)可不吃這一套,所以這里通過(guò)注釋關(guān)閉了對(duì)該接口的命名檢查。這樣的接口不能由類實(shí)現(xiàn)。 前面講 泛型 的時(shí)候,提到了接口。和泛型一樣,接口也是目前 JavaScript 中并不存在的語(yǔ)法。 由于泛型語(yǔ)法總是附加在類或函數(shù)語(yǔ)法中,所以從 TypeScript 轉(zhuǎn)譯成 JavaScript 之后,至少還存在類和函數(shù)(只是...

    darkbaby123 評(píng)論0 收藏0
  • 一篇文章帶你過(guò)一遍 TypeScript

    摘要:泛型通過(guò)在函數(shù)接口類變量名后使用定義。抽象類可以包括具體實(shí)現(xiàn)一個(gè)類只能繼承一個(gè)類,但是可以實(shí)現(xiàn)多個(gè)接口。該開(kāi)源項(xiàng)目目前由社區(qū)進(jìn)行維護(hù)。通常通過(guò)中的字段,或者聲明文件進(jìn)行聲明。 TypeScript 是 Javascript 的一個(gè)超集,提高了代碼的可讀性和可維護(hù)性。Typescript 官網(wǎng)提供的文檔已經(jīng)相當(dāng)完善,但完整地看一遍需要一定的時(shí)間,本文試將 TypeScript 中要點(diǎn)提出...

    AlphaWallet 評(píng)論0 收藏0
  • 9102年,隔壁公司新來(lái)的女實(shí)習(xí)生問(wèn)我什么是TypeScript ?

    摘要:它有時(shí)被稱做鴨式辨型法或結(jié)構(gòu)性子類型化。在里,接口的作用就是為這些類型命名和為你的代碼或第三方代碼定義契約。賦值后,和再也不能被改變了。函數(shù)的返回值類型是通過(guò)其返回值推斷出來(lái)的此例是和。技術(shù)本身沒(méi)有好壞,長(zhǎng)遠(yuǎn)看,弱類型語(yǔ)言并不是那么的友好。 showImg(https://segmentfault.com/img/bVbwQe2?w=1792&h=1266); TypeScript不...

    荊兆峰 評(píng)論0 收藏0
  • 9102年,隔壁公司新來(lái)的女實(shí)習(xí)生問(wèn)我什么是TypeScript ?

    摘要:它有時(shí)被稱做鴨式辨型法或結(jié)構(gòu)性子類型化。在里,接口的作用就是為這些類型命名和為你的代碼或第三方代碼定義契約。賦值后,和再也不能被改變了。函數(shù)的返回值類型是通過(guò)其返回值推斷出來(lái)的此例是和。技術(shù)本身沒(méi)有好壞,長(zhǎng)遠(yuǎn)看,弱類型語(yǔ)言并不是那么的友好。 showImg(https://segmentfault.com/img/bVbwQe2?w=1792&h=1266); TypeScript不...

    alighters 評(píng)論0 收藏0
  • 【譯】使用TypeScript兩年后-值得嗎?

    摘要:弄了一個(gè)持續(xù)更新的筆記,可以去看看,鏈接地址此篇文章的地址使用兩年后值得嗎基礎(chǔ)筆記的地址可以也可以。使用,你可以使用抽象類等功能。有關(guān)抽象類的更多信息支持,和方法,只讀屬性。 弄了一個(gè)持續(xù)更新的github筆記,可以去看看,鏈接地址:Front-End-Basics 此篇文章的地址:使用TypeScript兩年后-值得嗎? 基礎(chǔ)筆記的github地址:https://githu...

    RyanQ 評(píng)論0 收藏0
  • TypeScript 初識(shí)

    摘要:當(dāng)你陷在一個(gè)中大型項(xiàng)目中時(shí)應(yīng)用日趨成為常態(tài),沒(méi)有類型約束類型推斷,總有種牽一發(fā)而動(dòng)全身的危機(jī)和束縛??傮w而言,這些付出相對(duì)于代碼的健壯性和可維護(hù)性,都是值得的。目前主流的都為的開(kāi)發(fā)提供了良好的支持,比如和。參考資料中文文檔 文章博客地址:http://pinggod.com/2016/Typescript/ TypeScript 是 JavaScript 的超集,為 JavaScrip...

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

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

0條評(píng)論

閱讀需要支付1元查看
<