TypeScript教程(十三)泛型约束与命名空间

来源:程序思维浏览:3106次
泛型约束与命名空间

一、泛型约束

泛型约束是指确保泛型类使用的参数是提供特定方法的类型,比如直接对一个泛型参数使用length属性或是用push()方法,会报错,因为这个泛型根本不知道它有这个属性或是这个方法,使用泛型约束可以解决这一的问题。

接下来看一下代码示例:

interface IArrayFunc{
    //可以在setArray函数中使用push方法
    push:Function;
    //可以在setArray函数中使用length属性
    length:number;
}
function setArray<T extends IArrayFunc>(data:T,value:string|number){
    data.push(value);
    console.log(data);//结果为:[1,2,3,'4']
    console.log(data.length); //结果为:4
}
setArray([1,2,3],"4");

先创建一个名为IArrayFunc的接口,在该接口内部的push:Function和length:number表示被泛型约束的参数可以使用push()方法和length属性,接下来在声明的setArray()函数中使用<T extends IArrayFunc>来实现泛型约束,这样参数data就可以使用push()方法和length属性了。

二、命名空间

命名空间主要用于组织代码,避免命名冲突,解决重名的问题,在代码量较大的情况下,为了避免各种变量命名相冲突,可将相似功能的函数、类、接口等放置到命名空间内,TypeScript的命名空间使用namespace关键字创建,可以将代码包裹起来,如果需要在外部访问命名空间内的接口或是类,则需要在类和接口添加export关键字。

接下来看一下代码示例:

namespace A{
    export let message="大家好";
    export class Person{
        public name:string="张三";
        public say(){
            console.log("大家好,我是"+this.name);
        }
    }
}
console.log(A.message);//结果:大家好
let person=new A.Person();
person.name; //结果:张三
person.say();

使用namespace关键字创建命名空间A,在A内部可以写任意代码,比如声明变量message和创建Person类,如果在外部调用需要使用export关键字将变量和类暴露出来,使用A.message可以获取命名空间内部变量的值,使用new A.Person()可以创建命名空间内部类的实例。
精品好课
最新完整React+VUE视频教程从入门到精,企业级实战项目
React和VUE是目前最火的前端框架,就业薪资很高,本课程教您如何快速学会React和VUE并应用到实战,教你如何解决内存泄漏,常用库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习Re...
HTML5基础入门视频教程易学必会
HTML5基础入门视频教程,教学思路清晰,简单易学必会。适合人群:创业者,只要会打字,对互联网编程感兴趣都可以学。课程概述:该课程主要讲解HTML(学习HTML5的必备基础语言)、CSS3、Javascript(学习...
最新完整React视频教程从入门到精通纯干货纯实战
React是目前最火的前端框架,就业薪资很高,本课程教您如何快速学会React并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习React高薪就...
React实战视频教程仿京东移动端电商
React是前端最火的框架之一,就业薪资很高,本课程教您如何快速学会React并应用到实战,对正在工作当中或打算学习React高薪就业的你来说,那么这门课程便是你手中的葵花宝典。
HTML5视频播放器video开发教程
适用人群1、有html基础2、有css基础3、有javascript基础课程概述手把手教你如何开发属于自己的HTML5视频播放器,利用mp4转成m3u8格式的视频,并在移动端和PC端进行播放支持m3u8直播格式,兼容...
VUE2+VUE3视频教程从入门到精通(全网最全的Vue课程)
VUE是目前最火的前端框架之一,就业薪资很高,本课程教您如何快速学会VUE+ES6并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己封装组件,正式上线白屏问题,性能优化等。对正在工作当中或打算学习VUE高薪就...
Vue2+Vue3+ES6+TS+Uni-app开发微信小程序从入门到实战视频教程
2021年最新Vue2+Vue3+ES6+TypeScript和uni-app开发微信小程序从入门到实战视频教程,本课程教你如何快速学会VUE和uni-app并应用到实战,教你如何解决内存泄漏,常用UI库的使用,自己...
jQuery视频教程从入门到精通
jquery视频教程从入门到精通,课程主要包含:jquery选择器、jquery事件、jquery文档操作、动画、Ajax、jquery插件的制作、jquery下拉无限加载插件的制作等等......
收藏
扫一扫关注我们