如何编写一个d.ts文件的步骤详解(2)

// 实例方法 interface People{ name: string age: number getName(): string getAge():number } interface People_Static{ new (name: string, age: number): People /** 静态方法 */ staticA():number (w:number):number } declare var People:People_Static

效果:

作为函数使用:


类的静态方法:


类的构造函数:

类的实例方法:


模块化

除了上面的全局的方式,我们有时候还是通过require的方式引入模块化的代码。

比如这样的效果:

 

对应的写法是这样的:

declare module "abcde" { export let a: number export function b(): number export namespace c{ let cd: string } }

其实就是外面套了一层 module "xxx",里面的写法和之前其实差不多,把declare换成了export。

此外,有时候我们导出去的是一个函数本身,比如这样的:

 

对应的写法很简单,长这个样子:

declare module "app" { function aaa(some:number):number export=aaa }

以此类推,导出一个变量或常量的话这么写:

declare module "ccc" { const c:400 export=c }

效果:

 

UMD

有一种代码,既可以通过全局变量访问到,也可以通过require的方式访问到。比如我们最常见的jquery:


其实就是按照全局的方式写d.ts,写完后在最后加上declare namespace "xxx"的描述:

declare namespace UUU{ let a:number } declare module "UUU" { export =UUU }

效果这样:

作为全局变量使用:


作为模块加载使用:


其他

有时候我们扩展了一些内置对象。比如我们给Date增加了一个format的实例方法:

 

对应的d.ts描述文件这样写:

interface Date { format(f: string): string }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

您可能感兴趣的文章:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/pfpxf.html