.d.ts 文件编写笔记(1)初识

159 阅读1分钟

全局量的类型声明

//全局变量声明
declare var aaa:number
//多种类型
declare var aaa:number|string
//常量(???)
declare const max:200

全局函数声明

/** id是用户的id,可以是number或者string */
decalre function getName(id:number|string):string

可以同时定义多套函数声明

declare function get(id: string | number): string
declare function get(name:string,age:number): string

参数可选时

declare function render(callback?:()=>void): string

定义类

declare class Person {
    static maxAge: number //静态变量
    static getMaxAge(): number //静态方法
    constructor(name: string, age: number) //构造函数
    getName(id: number): string 
}

定义对象/命名空间

declare namespace OOO{
    var aaa: number | string
    function getName(id: number | string): string
    class Person {
        static maxAge: number //静态变量
        static getMaxAge(): number //静态方法
        constructor(name: string, age: number) //构造函数
        getName(id: number): string //实例方法
    }
}

复杂情况:多种类型并存,比如:既是对象又是函数

declare function $2(s:string): void
declare namespace $2{
    let aaa:number
}

定义模块module,用于require和import

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

扩展其它类型,比如类,命名空间,模块等。比如:扩展Data类里,新增一个方法

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