TypeScript声明合并的实现

 更新时间:2022年07月07日 09:30:37   作者:YY小怪兽  
本文主要介绍了TypeScript声明合并的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

1.接口合并

interface TestInterface {
    name:string;
}
interface TestInterface {
    age:number;
}
//相当于下面
interface TestInterface {
    name:string;
    age:number;
}
class Person implements TestInterface{
    name:string;
    age:number;
}

1.1同名接口如果属性名相同, 那么属性类型必须一致

interface TestInterface {
    name:string;
}
interface TestInterface {
    name:number;//报错
}

1.2同名接口如果出现同名函数, 那么就会成为一个函数的重载

interface TestInterface {
    getValue(value:number):number;
}
interface TestInterface {
    getValue(value:string):number;
}
let obj:TestInterface = {
    getValue(value:any):number{
        if(typeof value === 'string'){
            return value.length;
        }else{
            return value.toFixed();
        }
    }
}
console.log(obj.getValue("abcdef"));
console.log(obj.getValue(3.14));

2.命名空间

namespace Validation{
    export let name:string = 'lnj';
}
namespace Validation{
    export let age:number = 18;
}
console.log(Validation.name);
console.log(Validation.age);

2.1同名的命名空间中不能出现同名的变量,方法等

namespace Validation{
    export let name:string = 'lnj';
    export let say = ()=> "abc";
}
namespace Validation{
    export let name:string = 'zs';//报错
    export let say = ()=> "abc";//报错
}

2.2同名的命名空间中其它命名空间没有通过export导出的内容是获取不到的

namespace Validation{
    let name:string = 'lnj';//输出name = 获取不到name
    //  export let name:string = 'lnj'; 输出name =lnj
    
}
namespace Validation{
    export let say = ()=> {
        console.log(`name = ${name}`);
    };
}
Validation.say();

3.命名空间和类合并

注意点: 类必须定义在命名空间的前面
会将命名空间中导出的方法作为一个静态方法合并到类中

class Person {
    say():void{
        console.log('hello world');
    }
}
namespace Person{
    export const hi = ():void=>{
        console.log('hi');
    }
}
console.dir(Person);

4.命名空间和函数合并

注意点: 函数必须定义在命名空间的前面

function getCounter() {
    getCounter.count++;
    console.log(getCounter.count);
}
namespace getCounter{
    export let count:number = 0;
}

5.命名空间和枚举合并

注意点: 没有先后顺序的要求

enum Gender {
    Male,
    Female
}
namespace Gender{
    export const Yao:number = 666;
}
console.log(Gender);

到此这篇关于TypeScript声明合并的实现的文章就介绍到这了,更多相关TypeScript声明合并内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • JavaScript模板字符串用法实例

    JavaScript模板字符串用法实例

    在ES6之前我们都使用单引号或者双引号来包裹字符串,当我们想要在字符串中加入变量时,不能直接写在字符串里,而是需要通过字符串拼接的方式来往字符串中加入变量,这篇文章主要给大家介绍了关于JavaScript模板字符串用法的相关资料,需要的朋友可以参考下
    2022-11-11
  • JavaScrip如何安全使用Payment Request API详解

    JavaScrip如何安全使用Payment Request API详解

    这篇文章主要为大家介绍了JavaScrip如何安全使用Payment Request API详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • js显示时间 js显示最后修改时间

    js显示时间 js显示最后修改时间

    本文介绍js如何显示最后修改时间,在页面的文本框中显示文件上一次被修改的时间,通过这种方法可以查看网页的更新时间,有需要的朋友可以参考下
    2013-01-01
  • js制作提示框插件

    js制作提示框插件

    这篇文章主要介绍了js制作提示框插件的方法,帮助大家更好的理解和使用js,感兴趣的朋友可以了解下
    2020-12-12
  • 详解在微信小程序的JS脚本中使用Promise来优化函数处理

    详解在微信小程序的JS脚本中使用Promise来优化函数处理

    这篇文章主要介绍了详解在微信小程序的JS脚本中使用Promise来优化函数处理,引入Promise确实能够很好的解决异步回调函数的可读性等问题,同时也使得我们调用的时候代码简洁一些,本文介绍如何在小程序的JS代码里面使用Promise来封装一些函数的做法
    2019-03-03
  • js中对象与对象创建方法的各种方法

    js中对象与对象创建方法的各种方法

    这篇文章主要给大家介绍了关于js中对象与对象创建方法的各种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-02-02
  • 关于在Servelet中如何获取当前时间的操作方法

    关于在Servelet中如何获取当前时间的操作方法

    下面小编就为大家带来一篇关于在Servelet中如何获取当前时间的操作方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • 关于document.cookie的使用javascript

    关于document.cookie的使用javascript

    构造通用的cookie处理函数 cookie的处理过程比较复杂,并具有一定的相似性。因此可以定义几个函数来完成cookie的通用操作,从而实现代码的复用。
    2010-10-10
  • 有趣的思路~~JS仿 WINXP 注销桌面渐隐效果

    有趣的思路~~JS仿 WINXP 注销桌面渐隐效果

    有趣的思路~~JS仿 WINXP 注销桌面渐隐效果...
    2006-10-10
  • 详解如何使用webpack打包JS

    详解如何使用webpack打包JS

    这篇文章主要介绍了详解如何使用webpack打包JS,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-06-06

最新评论