ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

【TypeScript】如何写一个声明文件

2020-12-14 15:30:02  阅读:307  来源: 互联网

标签:文件 TypeScript string number export var static 声明 declare


全局类型

变量

declare var aaa: number;

函数

declare function getName(id: number | string): string;

interface声明函数

declare interface Get {
    (id: string): string,
    (name: string, age: number): string
}

declare var get: Get;

class

declare class Person {
    static maxAge: number;
	static getMaxAge(): number;
	
	constructor(name: string, age: number);
	getName(id: string): string;
}

对象

对象上面可能有变量,可能有函数、类

declare namespace OOO {
    var aaa: number | string;
    function getName(id: number | string): string;
    class Person {
        static max Age: number;
    	static getMaxAge(): number;
        constructor(name: string, age: number);
        getName(id: string): string;
    }
}

混合类型

既是函数又是对象

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

既是函数,又是类,又是对象

declare function getNum(w: number): number;
declare function getNum(w: string): number;

declare class Person {
    constructor(name: string, age: number);
    constructor(id: number);
    
    name: string;
	age: number;
	getName(): string;
	
	static a: string;
	static staticA():number;
}

declare namespace People{
    export var abc: number;
}

模块化的全局变量

import { Request, Response } from 'express';

// 由于当前的d.ts文件使用了import/export语法,就不会把declare var xxx:yyy当成全局变量了,需要改为
declare global {
    var req: Request;
    var res: Response;
    
    namespace OOO {
        var a: number;
    }
}

模块化(CommonJS)

declare module "abcd"{
    export let a: number;
    export function b(): number;
    export namespace s {
        let cd: string
    }
}

ES6的模块化方式(import export)

declare var aaa: number;
export { aaa };

UMD

有一种代码,既可以通过全局变量访问到,也可以通过require的方式访问到。

declare namespace UUU {
    let a: number
}

console.log(UUU.a);
declare module "UUU"{
    export = UUU;
}

let u = require("UUU");
console.log(UUU.a);

参考

如何编写一个d.ts文件

标签:文件,TypeScript,string,number,export,var,static,声明,declare
来源: https://blog.csdn.net/qq_34086980/article/details/111172113

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有