// 实例方法 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 }
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章: