Rumah > hujung hadapan web > tutorial js > typescript中接口与类的详解(附示例)

typescript中接口与类的详解(附示例)

不言
Lepaskan: 2018-10-19 14:38:16
ke hadapan
2176 orang telah melayarinya

本篇文章给大家带来的内容是关于typescript中接口与类的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

为了简便,以后把typescript简写为ts

接口Interface

可能有些同学对于接口比较陌生,在弱类型语言的语言层面很难看到它的踪影,不像强类型语言,语言层面就考虑到了。但在ts世界里,我们就可以看到它的踪影了,说白了,它只负责定义,说明你的对象里面有些什么,也就是结构,当然,它就不能够被实例化了。

定义

那么,该如何定义接口呢,当然是使用关键字interface

interface IA {
    name: string
}
Salin selepas log masuk

以上声明了接口IA,有个属性name,为字符串型
这样,我们就可以给一个变量声明IA类型并赋值初值

var a: IA = {
    name: 'hello'
}
Salin selepas log masuk

继承

接口也是可以继承的,假如你有个IB接口也包含IA的结构,就可以简单的继承它,并扩展自己的属性

interface IB extends IA {
    id: number
}
Salin selepas log masuk

类与接口类似,但它除了定义外,还有实现,如给变量赋值,它是可以实例化的

定义

定义的关键字是class,相信熟悉es6的同学已经早就用的习以为常了

class A {
    a: string = 'xxxxx'
}
Salin selepas log masuk

以上定义了类A,它有个字符串类型a,同时给它赋了初值xxxxx,这样我们可以像下面这样用,实例化它,并可以引用属性a

var a = new A()
console.log(a.a)
Salin selepas log masuk

当然我们也可以修改属性a

共有,私有,受保护等成员访问修饰符

属性有访问权限之分,哪些成员可以访问,谁可以访问

public 也就是谁都可以访问

private 只有内部成员可以访问,说白了,就是自带的函数可以访问

protected 受保护的,除了自己,继承了该类的都可以访问

以上关键字一般加在属性前面,不加的话,就是public

所谓成员,不要仅限于属性,还包括方法,也叫函数,但是在类中一般都叫方法
class A {
    public a = 'a'
    private b = 'b'
    protected c = 'c'
}
Salin selepas log masuk

注意,以上声明的时候没有给属性指定类型,这是合法的,因为可以根据后边的初值推断出相应的类型

构造函数

说到了类,自然是少不了构造函数,这个函数比较特别,是在实例化的时候调用的,也就是new的时候;强类型语言中一般都是以类名来命名的一个函数,ts中是以constructor来定义和实现的,当然严格来说,是js中是这样规定的。
其实构造函数跟普通函数没什么区别,可以有参数,函数体里面就是实现,可以给属性赋初值等操作,改写以上A,把给a
即使你定义任何构造函数,也会有一个默认构造函数的,只是它什么都没干

class A {
    a: string
    constructor(arg: string) {
        this.a = arg
    }
}
Salin selepas log masuk

在ts中,构造函数还有个神奇的功能,那就是在构造函数参数中定义和赋初值,不用在类中重复声明,在构造函数中赋初值,如下

class A {
    constructor(public a: string)
}
Salin selepas log masuk

上面我们就定义了A中的一个字符串属性a,把构造函数的第一个参数赋值给它

继承

跟接口类似,类继承也是用关键字extends

class B extends A {
    d: number = 1
}
Salin selepas log masuk

实现接口

类不仅可以继承已有类,还可以实现接口,要注意的是,接口中的属性,类中必须有相应的实现
实现的关键字是implements

class C implements IA {
    name = 'c'
}
Salin selepas log masuk

当然你可以实现和继承同时用,也是没问题的

class D extends A implements IA {
    name = 'd'
}
Salin selepas log masuk

静态成员

普通成员在每个实例中是单独存在的,而静态成员是在类中共享的,也就是只有一份,静态成员声明的方式是使用关键字static

class A {
    static sa = 'nnnn'
}
Salin selepas log masuk

以上我们就声明了一个字符串属性sa,并赋初值nnnn,当需要访问的时候,只要像下面调用就好了

A.sa
Salin selepas log masuk

关于接口与类的东西还挺多的,由于篇幅有限,先到此处吧,更多内容,以后在讲

Atas ialah kandungan terperinci typescript中接口与类的详解(附示例). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:segmentfault.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan