JSRUN 用代码说话

模板

编辑教程

TypeScript 声明文件模板


  • global-modifying-module.d.ts
  • global-plugin.d.ts
  • global.d.ts
  • module-class.d.ts
  • module-function.d.ts
  • module-plugin.d.ts
  • module.d.ts

global-modifying-module.d.ts

//[~库名称~][~可选版本号~]的类型定义
//项目:[~项目名称~]
//定义依据:[~您的姓名~]<[~A URL FOR YOU~]>
/*~这是全局修改模块模板文件。您应该将其重命名为index.d.ts
*~并将其放入与模块同名的文件夹中。
*~例如,如果你在为“super-greeter”写一个文件
*~文件应该是'super greeter/index.d.ts'
*/
/*~注意:如果全局修改模块是可调用或可构造的,则
*~需要将这里的模式与模块类或模块函数中的模式结合起来
*~模板文件
*/

声明全局{
/*~在这里,声明全局命名空间中的内容,或扩展
*~全局命名空间中的现有声明
*/

接口字符串{
fancyFormat(opts:StringFormatOptions):字符串;
}
}
/*~如果您的模块导出类型或值,请照常编写它们*/
导出接口StringFormatOptions{
fancinessLevel:数字;
}
/*~例如,在模块上声明一个方法(除了它的全局副作用外)*/
导出函数doSomething():void;
/*~如果你的模块什么也不导出,你就需要这条线。否则,删除它*/
导出{};

global-plugin.d.ts

//[~库名称~][~可选版本号~]的类型定义
//项目:[~项目名称~]
//定义依据:[~您的姓名~]<[~A URL FOR YOU~]>
/*~此模板显示如何编写全局插件。*/
/*~为原始类型编写声明并添加新成员。
*~例如,这将添加一个带有to重载的“toBinaryString”方法
*~内置数字类型。

interface Number {
    toBinaryString(opts?: MyLibrary.BinaryFormatOptions): string;
    toBinaryString(callback: MyLibrary.BinaryFormatCallback, opts?: MyLibrary.BinaryFormatOptions): string;
}

*~如果需要声明多个类型,请将它们放在命名空间中
*~以避免在全局命名空间中添加太多内容。

declare namespace MyLibrary {
    type BinaryFormatCallback = (n: number) => string;
    interface BinaryFormatOptions {
        prefix?: string;
        padding: number;
    }
}

global.d.ts

//[~库名称~][~可选版本号~]的类型定义
//项目:[~项目名称~]
//定义依据:[~您的姓名~]<[~A URL FOR YOU~]>
/*~如果这个库是可调用的(例如,可以作为myLib(3)调用),
*~把电话签名都写在这里。
*~否则,删除此部分。
 */
declare  function  myLib(a: string): string;
declare  function  myLib(a: number): number;

/*~如果您希望此库的名称是有效的类型名,
*~你可以在这里做。
*~
*~例如,这允许我们写'var x:myLib';
*~确保这一切都有意义!如果没有,就
*~删除此声明并在下面的命名空间中添加类型。
 */
interface myLib {
    name: string;
    length: number;
    extras?: string[];
}

/*~如果您的库中有对全局变量公开的属性,
*~把它们放在这里。
*~你还应该把类型(接口和类型别名)放在这里。
*/
declare namespace myLib {
    //~ We can write 'myLib.timeout = 50;'
    let timeout: number;

    //~ 我们可以进入 'myLib.version',但不能改变它
    const版本:string;

    //~ 我们可以通过 'let c = new myLib.Cat(42)'
    //~ 或参考,例如 'function f(c: myLib.Cat) { ... }
    class Cat {
        constructor(n: number);

        //~ 我们可以阅读 'c.age' from a 'Cat' instance
        readonly age: number;

        //~ We can invoke 'c.purr()' from a 'Cat' instance
        purr(): void;
    }

    //~ We can declare a variable as
    //~   'var s: myLib.CatSettings = { weight: 5, name: "Maru" };'
    interface CatSettings {
        weight: number;
        name: string;
        tailLength?: number;
    }

    //~ 我们可以写 'const v: myLib.VetID = 42;'
    //~  or 'const v: myLib.VetID = "bob";'
    type VetID = string | number;

    //~ 我们可以调用 'myLib.checkCat(c)' or 'myLib.checkCat(c, v);'
    function checkCat(c: Cat, s?: VetID);
}

module-class.d.ts

//[~库名称~][~可选版本号~]的类型定义
//项目:[~项目名称~]
//定义依据:[~您的姓名~]<[~A URL FOR YOU~]>
/*~这是类模块的模块模板文件。
*~您应该将其重命名为index.d.ts并将其放入与模块同名的文件夹中。
*~例如,如果你在为“super-greeter”写一个文件
*~文件应该是'super greeter/index.d.ts'
*/

/*~请注意,ES6模块不能直接导出类对象。
*~应使用CommonJS样式导入此文件:
*~import x=require('someLibrary');
*~
*~参考文档了解
*~针对ES6模块这一限制的解决方法。
*/

/*~如果此模块是在以下情况下公开全局变量“myClassLib”的UMD模块
*~在模块加载器环境外加载,在此处声明全局。
*~否则,删除此声明。
*/
export as namespace myClassLib;

/*~此声明指定类构造函数函数
*~是从文件导出的对象
*/
export = MyClass;

/*~ 在此类中编写模块的方法和属性 */
declare class MyClass {
    constructor(someParam?: string);

    someProperty: string[];

    myMethod(opts: MyClass.MyClassMethodOptions): number;
}

/*~如果您还想从模块中公开类型,可以
*~把他们放在这个街区。
*/
declare namespace MyClass {
    export interface MyClassMethodOptions {
        width?: number;
        height?: number;
    }
}

module-function.d.ts

//[~库名称~][~可选版本号~]的类型定义
//项目:[~项目名称~]
//定义依据:[~您的姓名~]<[~A URL FOR YOU~]>
/*~这是功能模块的模块模板文件。
*~您应该将其重命名为index.d.ts并将其放入与模块同名的文件夹中。
*~例如,如果你在为“超级迎宾员”写一个文件
*~文件应该是'super greeter/index.d.ts'
*/

/*~请注意,ES6模块不能直接导出可调用函数。
*~应使用CommonJS样式导入此文件:
*~import x=require('someLibrary');
*~
*~参考文档了解
*~针对ES6模块这一限制的解决方法。
*/

/*~如果此模块是在以下情况下公开全局变量“myFuncLib”的UMD模块
*~在模块加载器环境外加载,在此处声明全局。
*~否则,删除此声明。
*/
export as namespace myFuncLib;

/*~此声明指定函数
*~是从文件导出的对象
*/
export = MyFunction;
/*~这个例子展示了如何为你的函数设置多个重载*/
声明函数MyFunction(名称:string):MyFunction.NamedReturnType;
声明函数MyFunction(长度:number):MyFunction.LengthReturnType;

/*~如果您还想从模块中公开类型,可以
*~把他们放在这个街区。通常你会想描述
*~函数返回类型的形状;该类型应该
*~在这里声明,如这个例子所示。
*/
declare namespace MyFunction {
    export interface LengthReturnType {
        width: number;
        height: number;
    }
    export interface NamedReturnType {
        firstName: string;
        lastName: string;
    }

    /*~如果模块也有属性,请在此处声明。例如,
   *~这项声明表明,这项法规是合法的:
     *~   import f = require('myFuncLibrary');
     *~   console.log(f.defaultName);
     */
    export const defaultName: string;
    export let defaultLength: number;
}

module-plugin.d.ts

//[~库名称~][~可选版本号~]的类型定义
//项目:[~项目名称~]
//定义依据:[~您的姓名~]<[~A URL FOR YOU~]>
/*~这是模块插件模板文件。您应该将其重命名为index.d.ts
*~并将其放入与模块同名的文件夹中。
*~例如,如果你在为“super greeter”写一个文件
*~文件应该是'super greeter/index.d.ts'
*/
/*~在此行中,导入此模块添加到的模块*/
import * as m from 'someModule';

/*~ 如果需要,还可以导入其他模块 */
import * as other from 'anotherModule';

/*~ 在这里,声明与上面导入的模块相同的模块 */
declare module 'someModule' {
    /*~ 在内部,添加新的函数、类或变量。你可以用
     *~ unexported types from the original module if needed. */
    export function  theNewMethod(x: m.foo): other.bar; /*~ 您还可以从向现有接口添加新属性
     *~ 原始模块通过编写接口扩充 */  export  interface SomeModuleOptions {
        someModuleSetting?: string;
    }

    /*~ 也可以声明新类型,并将显示为
     *~ are in the original module */
    export interface MyModulePluginOptions {
        size: number;
    }
}

module.d.ts

//[~库名称~][~可选版本号~]的类型定义
//项目:[~项目名称~]
//定义依据:[~您的姓名~]<[~A URL FOR YOU~]>
/*~这是模块模板文件。您应该将其重命名为index.d.ts
*~并将其放入与模块同名的文件夹中。
*~例如,如果你在为“super-greeter”写一个文件
*~文件应该是'super greeter/index.d.ts'
*/

/*~如果此模块是在以下情况下公开全局变量“myLib”的UMD模块
*~在模块加载器环境外加载,在此处声明全局。
*~否则,删除此声明。
*/
export as namespace myLib;

/*~ 如果此模块有方法,请将它们声明为函数,如下所示.
 */
export  function  myMethod(a: string): string;
export  function  myOtherMethod(a: number): number;

/*~ 您可以通过导入模块来声明可用的类型 */
export interface someType {
    name: string;
    length: number;
    extras?: string[];
}

/*~您可以使用const、let或var声明模块的属性*/
导出const myField:number;

/*~如果虚线名称内有类型、属性或方法
*,在“namespace”中声明它们。
*/
export namespace subProp {
    /*~ For example, given this definition, someone could write:
     *~   import { subProp } from 'yourModule';
     *~   subProp.foo();
     *~ or
     *~   import * as yourMod from 'yourModule';
     *~   yourMod.subProp.foo();
     */
    export  function  foo(): void;
}
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟